2013-01-09 3 views
1

У меня есть один person стол. A person может иметь несколько kids, которые также являются лицами. Таким образом, между персональной таблицей существует соотношение между людьми.Hibernate критерии один-ко многим отличный результат

Я хочу получить всех лиц, имеющих хотя бы одного сына (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

Смежные вопросы