如何使用hibernate条件获取具有最大值的一个数据库条目

时间:2015-08-04 23:16:26

标签: java hibernate hibernate-criteria

如果我有一个名为Person的类

public class Person{
  private int id;
  private int age;
}

如何获得最大年龄的人物对象?

当我使用criteria.setProjection(Projections.max(" age))时,它会返回最大年龄,然后我应该找到这个年龄的人的条目。

我可以跳过查找最大年龄?并直接获得最大年龄的人。它可能看起来像,

person = criteria.somehow.setProjection().somehow.setMaxResults(1).uniqueResult();

我正在尝试找到这样做的方法,因为我担心如果我在休眠时进行两次搜索,会浪费我的表演时间。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码:

Criteria cr = session.createCriteria(Person.class);
cr.setProjection(Projections.projectionList()
        .add(Projections.max("age")));

如果上述方法不起作用,您可以这样做:

 Person p= (Person) session.createCriteria(Person.class)
.addOrder(Order.desc("age"))
.setMaxResults(1)
.uniqueResult();