Название не рассказывает полную историю.Пожалуйста, прочитайте сообщение.
У меня есть два объекта: взрослый и ребенок.Child имеет логическое поле isMale и ссылку на Adult.Взрослый не ссылается на Ребенка.
public class Adult {
long id;
}
public class Child {
long id;
boolean isMale;
Adult parent;
}
Я хочу создать запрос, чтобы указать количество сыновей у каждого взрослого, включая взрослых, у которых нет сыновей.Я попытался:
Запрос 1
SELECT adult, COUNT(child) FROM Child child
RIGHT OUTER JOIN child.parent as adult
WHERE child.isMale='true'
GROUP BY adult
, что означает sql
select
adult.id as col_0_0_,
count(child.id) as col_1_0_,
... {omit properties}
from
Child child
right outer join
Adult adult
on child.parentId=adult.id
where
child.isMale = 'true'
group by
adult.id
Запрос 1 не собирает взрослых, у которых нет сыновей.1014 *
Запрос 2:
SELECT adult, COUNT(child.isMale) FROM Child child
RIGHT OUTER JOIN child.parent as adult
GROUP BY adult
переводится в sql:
select
adult.id as col_0_0_,
count(child.id) as col_1_0_,
... {omit properties}
from
Child child
right outer join
Adult adult
on child.parentId=adult.id
group by
adult.id
Запрос 2 не имеет правильного количества сыновей.В основном COUNT не оценивает isMale.
Предложение where в запросе 1 отфильтровывает взрослых без сыновей.
Как построить запрос HQL или Criteria для этого варианта использования?
Спасибо.