1

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

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

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

这很好,只要只有一个儿子。例如,如果有三个儿子,则该人被退回 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 回答