Преобразование запроса SQL, включающего выборку соединения, в запрос Criteria Hibernate - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь преобразовать следующий запрос:

Query query = entityManager.createQuery("from TestEntity te " +
                    "join fetch te.someEntity se " +  
                    "left join fetch te.someEntity2 se2 "
                    "left join fetch se2.someEntity3 " +
                    "where se.predicateHere =:prediacte");

в Cibereria Hibernate Query, но определенно чего-то не хватает, потому что я получаю следующую ошибку:

query specified join fetching, but the owner of the fetched association was not present in the select list

Когда япопробуйте это:

Root<TestEntity> testEntityRoot = criteria.from(TestEntity.class);
testEntityRoot.fetch(TestEntity_.someEntity, JoinType.INNER);
testEntityRoot.fetch(TestEntity_.someEntity2, JoinType.LEFT).fetch(SomeEntity2.someEntity3, JoinType.LEFT);

Извините за наименование таблицы / столбца, но это конфиденциальные данные.

1 Ответ

0 голосов
/ 26 февраля 2019

Я решил проблему, используя тот же запрос:

Root<TestEntity> testEntityRoot = criteria.from(TestEntity.class);
testEntityRoot.fetch(TestEntity_.someEntity, JoinType.INNER);
testEntityRoot.fetch(TestEntity_.someEntity2, JoinType.LEFT).fetch(SomeEntity2.someEntity3, JoinType.LEFT);

За исключением того, что я выбирал объекты в неправильном порядке.

Сначала нам нужно получить корневую сущность, изатем соедините все выборки, чтобы получить тот, который нам нужен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...