ejbql查询的正确语法是什么,它遍历多个到一个关系的四个级别

时间:2009-12-01 04:24:40

标签: hibernate jpa ejbql

我在JPA(hibernate)中有一个简单的数据模型,包含多对一和一对一的关系,类似于:

town - >国家 - >州长 - >国家 - >大陆

城镇是多对一的州,州是一对一的州长,州长是多对一到国家,国家是多对一到大陆。

我想通过其独特的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

Hiberante从这个ejbql生成正确的sql,但是当我执行myTown.getState()。getGovernor()时。我为州长找回了一个空对象。为什么hibernate没有填充调控器?看起来它似乎不想在树上多层填充对象。有谁看到我做错了什么?

1 个答案:

答案 0 :(得分:0)

没关系。我上面的语法确实有效。我的问题不是从一些先前的活动中刷新hibernate会话并获得一个没有财产填充的对象的缓存版本。纠正这个问题后,一切都很好。