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

Я пытаюсь получить максимальное значение из таблицы, но значение должно быть установлено в течение последних 5 дней.

Приведенный ниже запрос работает, но как его написать в Hibernate Query Laguage, HQL?

  SELECT MAX(my_value) as my_value FROM Character WHERE create_date > now() + interval '-5 day'

Я попытался сделать приведенный выше оператор sql как собственный запрос, но затем он жалуется на то, что некоторые поля не могут быть найдены (я предполагаю, что Hibernate пытается установить все поля в объекте, но приведенный выше sql просто возвращает один столбец/строку называется 'my_value').


person Rox    schedule 28.05.2014    source источник


Ответы (1)


вы можете сделать это, как показано ниже

сначала получите дату последнего 5-го дня, используя java

Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_YEAR, -6);
Date d = c.getTime();

select c.my_value from Character c 
where  c.my_value = 
     (select max(cc.my_value) from Character cc where cc.create_date > d )

убедитесь, что класс символов правильно имеет атрибуты my_value и create_date и используйте их так, как они есть в классе сущностей символов, а не как в таблице.

person Karibasappa G C    schedule 28.05.2014
comment
Спасибо за ваш ответ, но это не сработало. HQL выдает ошибку о том, что столбец now не существует. Я также пытался использовать now(), но это тоже не сработало. - person Rox; 28.05.2014
comment
видите, вы не можете использовать сейчас ... я только что упомянул об этом, думая, что вы замените его фактической текущей датой ... поэтому используйте sysdate там вместо сейчас .. - person Karibasappa G C; 28.05.2014
comment
Попробуйте current_date() вместо сейчас. - person Ian Stevens; 28.05.2014
comment
вы можете использовать current_date вместо now и попробовать.. current_date -5 дает записи за последние 5 дней..обновил мой ответ..проверьте.. - person Karibasappa G C; 28.05.2014
comment
проверить ответ обновлений -> использовать java для установки даты за последние 5 дней и проверить его - person Karibasappa G C; 28.05.2014
comment
Извините, теперь вроде работает. Вопрос: если есть несколько записей с одинаковой датой, но с разным временем (create_date это timestamp), всегда ли будет возвращаться самое высокое значение с самым высоким временем с current_date()? Потому что это то, чего я хочу достичь. - person Rox; 28.05.2014
comment
да ... чтобы убедиться, что после того, как вы вставите 2 строки с одинаковой датой и разницей во времени, и посмотрите, как она себя ведет ... в идеале, как ведет себя метка времени ... - person Karibasappa G C; 28.05.2014