как объединить java.util.Calendar и HQL между

Я пытаюсь получить книги, которые были одолжены между двумя свиданиями. Так как в данных прекрасный 2009 год показан как функция 109, я решил использовать календари.

Однако при написании своего HQL я столкнулся с проблемой, что BETWEEN не рассматривает календарь как дату. Теперь мне интересно, есть ли решение для этого. Или я застрял в написании функций в своем классе, чтобы получить час, день, месяц, год и написать длинный оператор where?

query = session.createQuery("from model.Book book where book.loaned between :earliest and :latest");

Проблема в том, что между работает только с объектом даты. и заимствован Javva.Util.Calendar.


person user211992    schedule 16.11.2009    source источник


Ответы (1)


Вы можете получить Date из Calendar с помощью Calendar.getTime — вам это поможет? По общему признанию, вы можете столкнуться с проблемами часового пояса, если не будете осторожны... как именно даты хранятся в базе данных?

person Jon Skeet    schedule 16.11.2009
comment
Вы можете использовать getTime в классе java, но вы не можете сделать это в HQL. - person user211992; 16.11.2009
comment
Хорошо, тогда я не понимаю, как вы это называете... Я думал, вы передаете аргументы в запрос. Не могли бы вы привести пример кода в своем вопросе, чтобы сделать его более понятным? Я подозреваю, что не смогу помочь, но надеюсь, что кто-то еще сможет. - person Jon Skeet; 16.11.2009
comment
query = session.createQuery(из книги model.Book, где book.loaned между :earliest и :latest). Проблема в том, что между работает только с объектом даты. и заимствован Java.Util.Calendar. Возможно, есть другой способ получить книги между двумя датами, но я его пока не нашел. - person user211992; 16.11.2009
comment
Пожалуйста, отредактируйте этот код в своем вопросе - это облегчит чтение вопроса всем. Однако я бы предположил, что book.loaned, вероятно, должен быть java.util.Date; вы можете добавить дополнительное (непостоянное) свойство, чтобы получить его как календарь. - person Jon Skeet; 16.11.2009
comment
Можете ли вы переписать его, чтобы использовать меньше/больше, например. : где book.loaned ›= :самый ранний и book.loaned ‹= :последний? - person nos; 16.11.2009