【问题标题】:What is the correct syntax for an ejbql query that traverses four levels of many to one relationships遍历四个多对一关系级别的 ejbql 查询的正确语法是什么
【发布时间】: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() 时。我为我的州长取回了一个空对象。为什么休眠不填充州长?似乎它不想在树的上一层以上填充对象。有人看到我做错了吗?

【问题讨论】:

    标签: hibernate jpa ejbql


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多