Hibernate标准一对多的不同结果

时间:2013-01-09 15:58:30

标签: hibernate hibernate-criteria

我有一张person表。 person可能有多个kids,也是人。 因此,人员表之间存在一对多的关系。

我希望得到所有至少有一个儿子(sex=male)的人。我按照以下标准这样做:

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

只要只有一个儿子,这很好。如果有例如三个儿子,这个人三次返回。但我只需要一次这个人。我怎样才能对结果做出明确的分析?

1 个答案:

答案 0 :(得分:5)

将其更改为:

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