0

我在 JPA(休眠)中有一个简单的数据模型,由多对一和一对一的关系组成,类似于:

城镇 -> 州 -> 州长 -> 国家 -> 大陆

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

我想通过其唯一的 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() 时。我为我的州长取回了一个空对象。为什么休眠不填充州长?似乎它不想在树的上一层以上填充对象。有人看到我做错了什么吗?

4

1 回答 1

0

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

于 2009-12-01T05:13:33.307 回答