С Hibernate / JPA запрос только в HQL / JQL, как я могу задать предложение where для последних x дней? - PullRequest
1 голос
/ 02 февраля 2011

Я ищу HQL-эквивалент для преобразования x сумм дней из текущей временной метки в запрашиваемое значение.

Так вот, как этот sudo-HQL: из газеты как газета где газета.публикуется

И тогда daysparam вводится как параметр запроса. И опубликовано это поле даты.

Это в любом случае выполнимо только на HQL, без написания собственного спящего диалекта или использования критериев в реальном коде? Кажется, что такая стандартная функция, которая не поддерживается простым HQL, кажется странной.

Я использую HibernatePagingItemReader от Spring batch, который предназначен только для xml, поэтому я хотел избежать нежелательного расширения этого класса или создания собственного диалекта и т. Д.

Подобный вопрос, кажется, только предлагает календарь critera или новый диалект:

Выполнение даты / времени по математике в HQL?

Как выполнять операции с датами в Hibernate HQL

1 Ответ

0 голосов
/ 03 февраля 2011

Что-то выглядит не совсем правильно: вы сказали, что published - это поле date (в базе данных, я полагаю). Затем вы используете current_timestamp минус целочисленное значение для сравнения с полем даты. В результате вы не получаете метку времени для даты в параметре, вы просто получаете current_timestamp - 2, что, я не думаю, представляет «два дня назад» ;-) Если вы использовали current_date, думаю, это может сработать.

from Newspaper as newspaper where newspaper.published < current_date - :daysparam

Но, тем не менее, я бы предпочел оставить это вычисление на стороне Java, чтобы запрос был:

from Newspaper as newspaper where newspaper.published < :start_date

Это не сработает, только если вы не используете UTC на своих серверах (что вам следует).

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