Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 对于遍历四级多对一关系的ejbql查询,正确的语法是什么_Hibernate_Jpa_Ejbql - Fatal编程技术网

Hibernate 对于遍历四级多对一关系的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

我在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
join fetch n.continent c
where t.id=?id

Hibernate从这个ejbql生成正确的sql,但是当我执行myTown.getState().getGovernor()时。我为我的调控器返回一个空对象。为什么hibernate没有填充调控器?它似乎不想在树的上一层填充多个对象。有人知道我做错了什么吗?

没关系。我上面的语法确实有效。我的问题是没有从以前的一些活动中刷新hibernate会话,并获取未正确填充的对象的缓存版本。在纠正了那个问题之后,一切都很好