1

テーブルが1つありpersonます。Apersonには複数のがありkids、これも人です。したがって、personテーブルの間には1対多の関係があります。

少なくとも1人の息子がいるすべての人を取得したいと思い(sex=male)ます。私は次の基準でこれを行います:

List personsWithSon = sess.createCriteria(Person.class)
     .createAlias("kids", "k")
     .add( Restrictions.eq("k.sex", "male") )
     .list();

息子が1人だけであれば、これで問題ありません。たとえば息子が3人いる場合、その人は3回返還されます。しかし、私はその人を一度だけ必要とします。結果を明確にするにはどうすればよいですか?

4

1 に答える 1

5

次のように変更します。

List personsWithSon = sess.createCriteria(Person.class).createAlias("kids", "k").add(Restrictions.eq("k.sex", "male")).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
于 2013-01-09T16:25:57.683 に答える