如何使用Hibernate查询语言从表中获取最高值?

时间:2014-05-28 18:28:53

标签: sql hibernate postgresql hql wildfly

我正在尝试从表中获取最高值,但该值必须在过去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')。

1 个答案:

答案 0 :(得分:1)

你可以像下面这样做

首先使用java

获取过去第5天的日期
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 )

确保Character类正确地具有my_value和create_date属性,并在Character实体类中使用它们,而不是像在表中那样。