У меня есть база данных, включающая eventType и таблицы событий.

eventType 

  - id
  - name

event

  - id 
  - name
  - location
  - eventType_id
  - eventSubType_id

Где eventType_id и eventTypeSubtype_id ссылаются на таблицу eventType.

Что я хочу сделать с спящим режимом, так это выбрать все события, которые имеют:

  • тип события в (2,6)
  • и eventSubType в (2, null)

Я сделал :

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

Выходные данные не учитывают события, которые имеют тип события с идентификатором (2 или 6), а eventSubType имеет значение null, они учитывают только события, которые имеют тип события с идентификатором (2 или 6) и тип события (2). Выход должен быть как

Благодарность

0
neveen 22 Янв 2010 в 11:25
А что вы пробовали и не получилось?
 – 
Bozho
22 Янв 2010 в 11:33
Просто совет, критерии выхода уродливы, их трудно читать и понимать, лучше использовать HQL, поскольку он очень читаем и очень близок к SQL.
 – 
Omar Al Kababji
22 Янв 2010 в 23:41

2 ответа

Предполагая, что ваши номера eventType являются идентификаторами...

select event 
from Event event
where event.eventType_id in (2,6)
and (eventSubType is null
     or eventSubType = 2)
2
KLE 22 Янв 2010 в 11:40

Вы использовали eq вместо in...

0
malaverdiere 22 Янв 2010 в 13:08