使用附加条件从表中暂停最大记录

时间:2012-07-19 03:32:53

标签: hibernate

我正在尝试从最高年龄+名称

的表中获取记录
  Criteria criteria = session
 .createCriteria(Person.class)
 .setProjection(Projections.max("age"));
 Integer maxAge = (Integer)criteria.uniqueResult();

以上代码给出了整个表格中的最高年龄,而我想要获得最高年龄,只有人名=“john”

我怎样才能实现这一目标?

我试图以这种方式添加一个critera

 Criteria critNew = session
 .createCriteria(Person.class);
 critNew.add(Restrictions.eq("personName","john"));
 critNew.add(Restrictions.eq("age", maxAge));

但是这样只会搜索john,其中maxAge是“整个表中的最高年龄”

例如,如果整个表中的maxAge是50。 并且有3个人名为“john”,年龄为“10”,“20”,“30” 我的代码不起作用

请建议 谢谢

1 个答案:

答案 0 :(得分:1)

只需将它们组合成一个标准。

Criteria criteria = session
   .createCriteria(Person.class)
   .add( Restrictions.eq("name", "john"))
   .setProjection(Projections.max("age"));

Integer maxAge = (Integer)criteria.uniqueResult();