を更新した後に失敗した、いくつかのクエリメッセージで失敗加入:「自動」、ネストされたエンティティのフェッチが(それは、JBoss 6へのJBoss 4.2.2からスイッチに付属していると思います)、新しいHibernateのバージョンにアップグレードした後にHibernate
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バージョンに切り替えた後に突然失敗するのですか?
次のquestionは、この問題に関連しており解決策を含んでいますが、問題は説明していません。
あなたの質問は、hibernate 3.2.6.gaから3.5.6にアップグレードした後、私の問題の解決策を見つけ出すのを助けました。 '指定されたクエリを取得しましたが、フェッチされた関連の所有者はあなたがそれがうまくいっていることを示唆したエイリアスアプローチを使用して、なぜ「なぜ」でもあなたを助けることができません! –
はこのHQLまたは標準のJPQLですか? – wrschneider
これは 'EntityManager.createQuery'を介して行われるので、HQLだと思います。 –