【发布时间】:2009-12-01 04:24:39
【问题描述】:
我在 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
Hiberante 从此 ejbql 生成正确的 sql,但是当我执行 myTown.getState().getGovernor() 时。我为我的州长取回了一个空对象。为什么休眠不填充州长?似乎它不想在树的上一层以上填充对象。有人看到我做错了吗?
【问题讨论】: