У меня есть три объекта: Person
, Country
и CountryTranslation
.Person
относится к одному Country
, а Country
имеет множество CountryTranslations
.
. Я хочу, чтобы мой запрос извлекал Country
и CountryTranslations
, когда он выбирает Person
, чтобыизбегать множественных запросов.
Чтобы вывести Country
вместе с Person
, я делаю:
List<Person> persons = (List<Person>) entityManager
.createQuery("SELECT person from Person person " +
"left join fetch person.country")
.getResultList()
Это работает нормально, я вижу, что в спящем режиме это красиво, и никакие дополнительные запросы не выполняются, чтобы принести Country
, но чтобы вывести CountryTranslations
, он все равно выполняет дополнительные запросы.Затем я попытался:
List<Person> persons = (List<Person>) entityManager
.createQuery("SELECT person from Person person " +
"left join fetch person.country " +
"left join fetch person.country.translations")
.getResultList()
И я получаю ошибку:
org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list
Как правильно сделать эту выборку?
Заранее спасибо