После обновления до более новой версии гибернации (возможно, она пришла с переходом с JBoss 4.2.2 на JBoss 6), некоторые запросы завершаются с ошибкой:
Caused by: java.lang.IllegalArgumentException: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list [FromElement{explicit,not a collection join,fetch join,fetch non-lazy properties,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?
Следующий вопрос связан с этим вопросом и включает решение, но не объясняет проблему.