Hibernate使用链接对象获取对象

时间:2011-01-25 09:38:40

标签: java hibernate lazy-loading criteria

我的hibernate映射和查询有问题。 我有一个与B和C有关系的对象A.

获取模式是懒惰的(@ManyToOne(fetch = FetchType.LAZY)),我无法更改它。 所以我的问题是下一个:

当我通过get方法(hibernateDao.get)得到一个对象时,我得到了一个与B和C的白色关系的对象。

如果我创建一个条件,我强制使用criteria.setFetchMode(...)的关系来获取所有查询。但是我已经在网上看到了通过主键获取对象的标准并不是一件好事。

如何使用方法get?

执行此操作

感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用获取配置文件将获取模式设置为默认为Lazy,并将Eager设置为特定查询:http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e3524

如果您使用的是不支持Fetch Profiles的Hibernate版本,您可以随时执行HQL查询,使用连接检索所需的树。

  

但是我已经在网上看到制定一个按主键获取对象的标准并不是一件好事。

在排除解决方案之前,我会非常小心,因为你读到的地方“糟糕”。这最终可能是一件坏事,但如果你不明白为什么这是坏事,你可能会排除针对你的具体案例的解决方案; - )

答案 1 :(得分:0)

致电Hibernate.initialize();

示例:

myEntity = hibernateDao.get...;
Hibernate.initialize(myEntity);

这将强制hibernate加载myEntity中的所有映射实体。