我在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没有填充调控器?看起来它似乎不想在树上多层填充对象。有谁看到我做错了什么?
答案 0 :(得分:0)
没关系。我上面的语法确实有效。我的问题不是从一些先前的活动中刷新hibernate会话并获得一个没有财产填充的对象的缓存版本。纠正这个问题后,一切都很好。