Hibernate 对于遍历四级多对一关系的ejbql查询,正确的语法是什么
我在JPA(hibernate)中有一个简单的数据模型,由多对一和一对一关系组成,类似于: 城镇->州->州长->国家->大陆 城镇对州是多对一,州对州长是一对一,州长对国家是多对一,国家对大陆是多对一 我想通过它的唯一Id获取一个城镇实例,并急切地使用ejbql获取它的相关州、州长、国家和大陆。我认为合适的ejbql是:Hibernate 对于遍历四级多对一关系的ejbql查询,正确的语法是什么,hibernate,jpa,ejbql,Hibernate,Jpa,Ejbql,我在JPA(hibernate)中有一个简单的数据模型,由多对一和一对一关系组成,类似于: 城镇->州->州长->国家->大陆 城镇对州是多对一,州对州长是一对一,州长对国家是多对一,国家对大陆是多对一 我想通过它的唯一Id获取一个城镇实例,并急切地使用ejbql获取它的相关州、州长、国家和大陆。我认为合适的ejbql是: select t from town t join fetch t.state s join fetch s.governor g join fetch g.nation n
select t from town t
join fetch t.state s
join fetch s.governor g
join fetch g.nation n
join fetch n.continent c
where t.id=?id
Hibernate从这个ejbql生成正确的sql,但是当我执行myTown.getState().getGovernor()时。我为我的调控器返回一个空对象。为什么hibernate没有填充调控器?它似乎不想在树的上一层填充多个对象。有人知道我做错了什么吗?没关系。我上面的语法确实有效。我的问题是没有从以前的一些活动中刷新hibernate会话,并获取未正确填充的对象的缓存版本。在纠正了那个问题之后,一切都很好