2013-01-09 68 views
1

我有一個person表。 A person可能有多個kids,這也是人。 因此,人表之間存在着一對多的關係。休眠條件一對多不同的結果

我想所有的人,其中至少有一個兒子(sex=male)。我這樣做是通過以下標準:

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

這是好的,只要有只有一個兒子。如果有例如三個兒子,這個人返回三次。但我只需要一個人。我怎樣才能做出明顯的結果?

回答

5

將其更改爲:

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

謝謝!那就是訣竅。之前我正在使用「Projections.distinct」,但似乎沒有任何好處並導致錯誤。 – ddawg