0

我正在尝试从最高年龄+名称的表中获取记录

  Criteria criteria = session
 .createCriteria(Person.class)
 .setProjection(Projections.max("age"));
 Integer maxAge = (Integer)criteria.uniqueResult();

上面的代码给了我整个表中的最高年龄,而我只想在人名=“约翰”的地方获得最高年龄

我怎样才能做到这一点?

之后我尝试以这种方式添加标准

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

但通过这种方式,它只会搜索 maxAge 是“整个表中的最高年龄”的 john

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

请推荐 谢谢

4

1 回答 1

1

只需放在一个标准中。

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

Integer maxAge = (Integer)criteria.uniqueResult();
于 2012-07-19T04:03:17.220 回答