Я использую hibernate 3.6.10.Final и MySQL 5.5.
Я написал такой динамический запрос:
"from " + clazz.getName()+ " ORDER BY "+sortField+" "+sortDirection
Мои объекты в спящем режиме имеют отношения «многие к одному» родитель / потомок. если запрос упорядочен по полю от родителя, hibernate генерирует этот hql select:
select parent0_.ID as ID10_, parent0_.ID_CHILD as ID6_10_
from parent parent0_
order by parent0_.PARENTFIELD ASC
если запрос упорядочен по полю из дочернего элемента, у меня будет следующий hql:
select parent0_.ID as ID10_, parent0_.ID_CHILD as ID6_10_
from parent parent0_
cross join child1_
where parent0_.ID_CHILD = child1_.ID
order by child1_.CHILDFIELD ASC
Второй запрос возвращает меньше результатов, потому что parent0_.ID_CHILD может иметь значение NULL. Есть ли способ заставить спящий режим генерировать левое соединение?
Мне нужно что-то вроде этого
select parent0_.ID as ID10_,
parent0_.ID_CHILD as ID6_10_
from
parent parent0_
left join
child child1_
on
parent0_.ID_CHILD = child1_.ID
order by child1_.CHILDFIELD ASC
child.parent.someProperty
всегда будет генерировать внутреннее соединение. Прочтите документацию. Это там. - person JB Nizet   schedule 10.03.2013