単純なプロパティ変更で、JPA実装をEclipseLinkとHibernateの間で交換できるようにしたいと思います。これは問題なく実行できますが、問題の原因は名前付きクエリの検証です。EclipseLinkを使用して、次のようにフェッチ結合を作成する必要があります。
SELECT id
FROM IndexDefinition id
JOIN FETCH id.index
JOIN id.index i
JOIN FETCH i.indexVersions
しかし、Hibernateを使用してこのクエリを検証すると、次の例外が発生します。
org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list
したがって、次のようにクエリをHQLに適したものに変更できます。
SELECT id
FROM IndexDefinition id
JOIN FETCH id.index i
JOIN FETCH i.indexVersions
ただし、これにより、EclipseLinkで次の例外が発生します。
Exception Description Syntax error parsing the query [IndexDefinition.getForIndex] SELECT id FROM IndexDefinition id JOIN FETCH id.index i, syntax error at [id].
Internal Exception MismatchedTokenException(78!=-1)
DAOレベルでクエリヒントを使用してフェッチ結合を実行できることは知っていますが、特定のフェッチ結合構文を使用して両方のJPA実装を満足させる方法はありますか?