Я хотел бы иметь возможность поменять свою реализацию 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 с помощью определенного синтаксиса выборочного соединения?