Зимуйте критерии one-many отличный результат

У меня есть один человек стол. человек мог бы иметь многократный дети , которые являются также людьми. Таким образом между столом человека есть связь "один ко многим".

Я хочу получить всех людей, у которых есть по крайней мере один сын (sex=male) . Я делаю это по следующим критериям:

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

Это прекрасно, пока есть только один сын. Если есть, например, три сына, человек возвращен три раза. Но мне просто нужен человек одно время. Как я могу сделать отличное по результату?

1
nl ja de

1 ответы

Измените его на:

List personsWithSon = sess.createCriteria(Person.class).createAlias("kids", "k").add(Restrictions.eq("k.sex", "male")).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
5
добавлено
Спасибо! Это добилось цели. Я работал с "Projections.distinct" прежде, но это didn' t, кажется, приносят пользу и вели в ошибки.
добавлено автор ddawg, источник