假设我有以下映射:
<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个选择来做到这一点。 (首先选择总用户数,然后按年龄排序,并选择第一个条目)。但是单一选择是否可能?
谢谢
帕洛阿
答案 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();