我有三个实体Person:Country和CountryTranslation。 Person与一个有关,Country并Country有许多CountryTranslations。
我希望我的查询同时获取Country以及CountryTranslations何时获取 aPerson以避免多个查询。
带着我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
进行此获取的正确方法是什么?
沧海一幻觉
相关分类