【问题标题】:Multiple join level with hibernate criteria具有休眠条件的多个连接级别
【发布时间】:2013-01-21 19:02:42
【问题描述】:

我是 Hibernate 的新手,我想知道如何使用 Criteria 进行此类操作:

我有 A、B 和 C 三个班级。 A 类与 B 类具有 @OneToMany 关联。B 类与 C 类具有@ManyToOne 关联。

我想要一个使用 Criteria 的请求,当我想要 A 类的对象时检索所有信息,以便我可以遍历 A.Bs 然后访问 b.c

目前我有一个只检索 B 的查询:

session.createCriteria(A.class)
.add(Restrictions.idEq(aId))
.setFetchMode("B", FetchMode.JOIN)
.uniqueResult();

感谢您的帮助

编辑: 我试过了:

session.createCriteria(A.class)
.add(Restrictions.idEq(aId))
.createCriteria("Bs")
.createCriteria("C")
.uniqueResult();

但这是否以这个错误结束:

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

【问题讨论】:

    标签: hibernate join criteria fetch


    【解决方案1】:

    找到解决办法:

    session.createCriteria(A.class)
    .add(Restrictions.idEq(aId))
    .setFetchMode("Bs", FetchMode.JOIN)
    .setFetchMode("Bs.c", FetchMode.JOIN)
    .uniqueResult();
    

    其中“Bs”是包含@OneToMany 关联的A 的属性,“c”是B 容器的@ManyToOne 关联的属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 2019-01-15
      • 2016-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多