强制预先加载原本延迟加载的属性

我有一个Hibernate对象,它的属性都是懒惰加载的。这些属性中的大多数是其他休眠对象或持久性集。

现在我想强制 Hibernate 预先加载这些属性一次。

当然,我可以“触摸”这些属性中的每一个,但也许还有另一种方法可以实现我的目标。object.getSite().size()


答案 1

这是一个古老的问题,但我也想指出 静态方法 。Hibernate.initialize

用法示例:

Person p = sess.createCriteria(Person.class, id);
Hibernate.initialize(p.getChildren());

子级现在已初始化为即使在会话关闭后也要使用。


答案 2

文档是这样说的:

您可以在 HQL 中使用强制通常预先获取属性。fetch all properties

引用


推荐