是否可以使用Hibernate中的Criteria为列选择具有最大值的数据?

时间:2010-03-19 15:58:23

标签: hibernate orm criteria

假设我有以下映射:

<hibernate-mapping package="mypackage">
    <class name="User" table="user">
  <id name="id" column="id">
   <generator class="native"></generator>
  </id>        
  <property name="name" />
  <property name="age" />
  </class>
</hibernate-mapping>

是否可以使用Hibernate中的Criteria选择最老的用户(年龄最大)?

我可以想象我可以用2个选择来做到这一点。 (首先选择总用户数,然后按年龄排序,并选择第一个条目)。但是单一选择是否可能?

谢谢

帕洛阿

2 个答案:

答案 0 :(得分:5)

使用Criteria API,您可以这样做:

session.createCriteria(User.class).addOrder(Order.desc("age")).setMaxResults(1)

答案 1 :(得分:1)

有点儿。您需要按年龄排序,以便最老的用户是您查询的第一个结果。然后将结果集限制为1并返回该唯一结果。

User oldest = getSession().createQuery("SELECT u FROM User u ORDER BY u.age DESC")
    .setMaxResults(1).uniqueResult();