0

最高年齢+名前のテーブルからレコードをフェッチしようとしています

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

上記のコードは、テーブル全体で最高の年齢を示していますが、人物名= "john"の場合にのみ、最高の年齢を取得したいと考えています。

どうすればこれを達成できますか?

その後、このように基準を追加してみました

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

ただし、この方法では、maxAgeが「テーブル全体で最も高い年齢」であるジョンのみが検索されます。

たとえば、テーブル全体のmaxAgeが50で、年齢が「10」、「20」、「30」の「john」という名前の人が3人いる場合、私のコードは機能しません。

ありがとうを提案してください

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 に答える