«Автоматическое» объединение вложенных объектов завершается ошибкой после обновления Hibernate

После обновления к более новой версии гибернации (предположительно, это произошло с переключением с JBoss 4.2.2 на JBoss 6), некоторые запросы завершаются с ошибкой с сообщением:

Вызвано: java.lang.IllegalArgumentException: org.hibernate.QueryException: запрос с указанным соединением выборка, но владелец выбранной ассоциации не присутствует в списке выбора [FromElem ent {явное, не объединение коллекции, соединение выборки, выборка неленивых свойств, classAlias ​​= null, role = null, tableName = (...)

Это всегда имеет место при использовании такого запроса:

SELECT entityA FROM EntityA entityA 
JOIN FETCH entityA.entityB
LEFT JOIN FETCH entityA.entityB.someField
WHERE entityA.entityB.anotherField LIKE :someParameter

Решение проблемы состоит в том, чтобы дать "entityA.entityB" псевдоним, а затем использовать этот псевдоним в предложении WHERE . Но в некоторых запросах LEFT JOIN FETCH явно не указывается, но все же предложение WHERE использует свойство объекта, на который имеется ссылка. Там тоже не получится? Что изменилось, так что он внезапно выходит из строя после перехода на новую версию JBoss?

Следующий вопрос связан с этим вопросом и включает решение, но не объясняет проблему.

6
задан Community 23 May 2017 в 11:46
поделиться