2013-08-10 2 views
0

Я пытаюсь найти записи в спящем режиме на основе объекта DateTime, где столбец startDate меньше, чем DateTime, а столбец endDate больше, чем DateTime. Я пытаюсь использовать этот код, используя код нижеHibernate DateTime между двумя столбцами

DetachedCriteria crit = DetachedCriteria.forClass(FinancialEventGroup.class); 
    crit.add(Property.forName("groupPeriodStart").lt(eventDate)); 
    crit.add(Property.forName("groupPeriodEnd").gt(eventDate)); 

Но это возвращает null, если это не так. Какие-либо предложения? Другие методы доступа DO работают, так что это не проблема с конфигурацией спящего режима. Я подозреваю, что это проблема с настройкой отложенных критериев.

Редактировать: Я выяснил свою проблему частично из-за помощи ниже. Я столкнулся с другой проблемой, когда я хочу, чтобы eventDate был меньше, чем groupPeriodEnd ТОЛЬКО ЕСЛИ конец периода группы не пуст (т. Е. Если это открытый период, который еще не закончился). Существует ли ограничение XOR/в спящем режиме? Есть ли способ сделать это или мне просто нужно отфильтровать результаты?

+1

Можете ли вы использовать обычный запрос HPQL в соответствии с критериями? Это выглядело бы как 'SELECT feg FROM FinancialEventGroup feg WHERE feg.groupPeriodStart <: event AND feg.gropPeriodEnd>: event" – Antoniossss

+1

Вы пытались создать sql в своем проекте sqldeveloper? –

ответ

0

Ваши критерии как они всегда будут производить запрос, который возвращает 0 записей. Независимо от типа данных, одно поле в таблице не может быть больше определенного значения и меньше, чем это в то же время ... Вы, вероятно, хотите использовать le или ge вместо lt/gt ...

0

Ограничения на использование вместо , а также ge/le (> =/< =)

DetachedCriteria crit = DetachedCriteria.forClass(FinancialEventGroup.class); 
    crit.add(Restrictions.le("groupPeriodStart",eventDate); 
    crit.add(Restrictions.ge("groupPeriodEnd",eventDate); 
+0

не должны ли это быть crit.add (Restrictions.ge ("groupPeriodStart", EVENTDATE); crit.add (Restrictions.le ("groupPeriodEnd", EVENTDATE); , если я хочу, чтобы результат после того, как дата начала и до даты окончания? – thurmc

+0

try switch ge/le –

Смежные вопросы