Как преобразовать тип даты в критерии гибернации - PullRequest
3 голосов
/ 03 декабря 2010

У меня есть ситуация.У меня есть два вида даты в базе данных MySQL.Один - это дата, а другой - дата и время.Теперь в критериях гибернации я должен проверить, больше ли одна дата, чем другая?

crit.add (Restrictions.lt ("award.deadline", "submission.date_received"));

Но различные типы вызывают проблемы с отображением «java.lang.ClassCastException: java.lang.String не может быть приведен к java.util.Date».

Даже я пытался разобрать его с помощью анализатора датыон не принимает как дату, а только как строку.Итак, можете ли вы сказать мне, как мы можем преобразовать одну дату в другой тип в условиях гибернации?

1 Ответ

5 голосов
/ 03 декабря 2010

Проблема в том, что Restrictions.lt(String propertyName, Object value) - это неправильное ограничение.Вам нужно Restrictions.ltProperty(String propertyName, String otherPropertyName).

Объяснение:

  • Restrictions.lt(String propertyName, Object value) - это сравнение свойства объекта с конкретным значением
  • Restrictions.ltProperty(String propertyName, String otherPropertyName) - для сравнения двух свойств объекта

Если вы используете Restrictions.lt("Y", "X"), а "Y" - это имя свойства даты, то hibernate попытается перевести "X" в Date (не к имени столбца), и синтаксический анализ «X» для даты, скажем, немного сложен - так что исключение повышено.

...