Hibernate Query-by-Example с датой - PullRequest
       0

Hibernate Query-by-Example с датой

2 голосов
/ 24 февраля 2012

Я использую класс Example Hibernate для запроса объектов, которые не соответствуют примеру. Все работает нормально, пока у меня нет даты в моем спящем типе. Однако, когда у меня есть даты в моем типе Hibernate, Example никогда не совпадает. (Поскольку это не так, я всегда получаю объекты, которые не должны присутствовать в запросе.)

Это код, который я выполняю

Criteria criteria = databaseSession.createCriteria("Person");
criteria.add(Restrictions.not(Example.create(sqlEntity).excludeNone()));
List entities = criteria.list();
// entities contains more objects than it should

Если я закомментирую свойство date из моего файла hbm.xml, запрос будет работать как положено.

<class entity-name="Person">
    ...
    <!-- This property is causing the Example to not match. -->
    <property name="date" type="date">
        <column name="Date"/>
    </property>
</class>

Объект sqlEntity имеет точность даты (т. Е. Значение времени равно 00:00:00). Это все, что предусмотрено в объекте sqlEntity. Именно поэтому свойство date имеет тип даты, а не метку времени. Фактические строки в таблице SQL имеют точность в миллисекундах и время, которое не равно 00: 00: 00.

Как выполнить этот пример запроса с точностью до даты для столбца datetime с точностью до миллисекунды?

Кстати, я отладил значение даты sqlEntity и объектов из entities, которые не должны были присутствовать из-за дат. Вызов Object.equals() для этих двух объектов возвращает true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...