新しい休止状態バージョンにアップグレードした後(JBoss4.2.2からJBoss6への切り替えに付属していると推測されます)、一部のクエリは次のメッセージで失敗します。
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バージョンに切り替えた後、突然失敗するように、何が変更されましたか?
次の質問はこの質問に関連しており、解決策が含まれていますが、問題の説明はありません。