Найти объекты Hibernate, где дата находится между начальной и конечной датами, которые могут быть нулевыми - PullRequest
2 голосов
/ 13 марта 2011

Я хотел бы найти все сущности событий, которые активны на определенную дату. Например:

from Event where startDate <= :specifiedDate and endDate > :specifiedDate

Однако Event.startDate и Event.endDate могут быть null. Значение null указывает на отсутствие даты начала или окончания (начало бесконечно в прошлом или окончание бесконечно в будущем).

Итак, if Event.startDate = null and Event.endDate = 2011-05-01, тогда это событие должно быть возвращено для всех значений указанных значений, меньших, чем 2011-05-01.

Также if Event.startDate = 2011-03-01 and Event.endDate = null, тогда это событие должно быть возвращено для всех значений указанных значений, больше или равных 2011-03-01.

Наконец, if Event.startDate = null and Event.endDate = null, затем событие должно быть возвращено для любой указанной даты.

Возможно ли это с помощью Hibernate и бэкэнда MySQL?

1 Ответ

4 голосов
/ 13 марта 2011

Это, безусловно, возможно.

При использовании критериев это должно быть что-то вроде:

List events = sess.createCriteria(Event.class)
                 .add( Restrictions.or(
                          Restrictions.isNull("startDate"),
                          Restrictions.ge("startDate", specifiedDate))
                 .add( Restrictions.or(
                          Restrictions.isNull("endDate"),
                          Restrictions.lt("endDate", specifiedDate))
               .list();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...