Запрос по возрасту в hql - PullRequest
       12

Запрос по возрасту в hql

1 голос
/ 28 февраля 2010

У меня есть класс User с одним полем с именем birthDate, которое является java.sql.Date. Как мне выполнить hql-запрос, который будет получать все User с возрастом от min до max?

(Мой реальный сценарий немного сложнее этого, но я застрял прямо сейчас).

UPDATE

Это должно быть выражение hql, чтобы я мог поместить выражение age в вычисляемое свойство.

Ответы [ 2 ]

5 голосов
/ 28 февраля 2010

Рассчитайте даты рождения, соответствующие минимальному и максимальному возрасту. Тогда используйте ниже HQL.

Select u from User u where u.birthDate between :minDate and :maxDate

Установите значения minDate и maxDate для значений, которые вы вычислили до выполнения запроса.

0 голосов
/ 28 февраля 2010

Это зависит от базы данных. У большинства есть какой-то способ обработки арифметики даты. В MySQL есть функция datediff, которая будет возвращать количество дней, чтобы вы могли поделить это на 365 и приблизиться. Диалект MySQL уже имеет datediff как зарегистрированную функцию. Для других баз данных вам может понадобиться использовать другие функции и, возможно, зарегистрировать их на собственном диалекте. Но, возможно, вы немного расстроитесь, если не будете учитывать високосные годы, что сложно в выражении HQL. Использовать даты проще, потому что вы можете сохранить месяц и день постоянными, изменить год, а затем использовать <или> в HQL.

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