2010-01-22 75 views
0

我有一个数据库包括EVENTTYPE和事件表查询与休眠

eventType 

    - id 
    - name 

event 

    - id 
    - name 
    - location 
    - eventType_id 
    - eventSubType_id 

其中eventType_id和eventTypeSubtype_id参照EVENTTYPE表。

什么,我想与Hibernate做的是选择具有所有事件:

  • EVENTTYPE在(2,6)
  • 和eventSubType(2,空)

我做:

EventCriteria.createCritria("eventType").add(Expression.in("id"),new Long [] {2L,6L}); 
EventCriteria.createCriteria("eventSubType").add(Expression.in("id", new Long [] {2L,null})); 

输出不考虑具有id为eventype(2或6)和eventSubType为空的事件,它仅考虑事件类型为id(2或6)且eventSubType为(2)的事件。输出必须是

感谢

+0

和你尝试什么,没不工作? – Bozho

+0

只是一个建议,离开标准是丑陋的,难以阅读和理解,它更好地使用HQL,因为它的可读性和SQL非常接近。 –

回答

2

假设你EVENTTYPE数字是IDS ...

select event 
from Event event 
where event.eventType_id in (2,6) 
and (eventSubType is null 
    or eventSubType = 2)