Java Hibernate.initialize方法。如何保证?

Java Hibernate.initialize方法。如何保证?,java,hibernate,Java,Hibernate,从hibernate JavaDoc: 公共静态无效初始化(对象代理) 抛出休眠异常 强制初始化代理或持久集合 注意:这仅确保代理对象或集合的初始化; 不保证集合中的元素将 被初始化/物化 但是如何保证这一点呢? 我有一个集合,它是延迟加载的(默认为@OneToMany)。考虑一个集合条目属性是@ LoB,或者包含一些其他懒惰启动对象(懒惰默认为@ LoB,或者标记为懒惰显式)。如何以的方式进行集合初始化,以确保集合项的内部属性是立即初始化还是延迟初始化 是否可以使用Hibernate.init

从hibernate JavaDoc:

公共静态无效初始化(对象代理) 抛出休眠异常

强制初始化代理或持久集合

注意:这仅确保代理对象或集合的初始化; 不保证集合中的元素将 被初始化/物化

但是如何保证这一点呢?

我有一个集合,它是延迟加载的(默认为@OneToMany)。考虑一个集合条目属性是@ LoB,或者包含一些其他懒惰启动对象(懒惰默认为@ LoB,或者标记为懒惰显式)。如何以的方式进行集合初始化,以确保集合项的内部属性是立即初始化还是延迟初始化


是否可以使用Hibernate.initialize方法?我应该使用不同的方法吗?

如果可能,我根本不会使用initialize方法。使用适当的注释(
FetchType.EAGER
)、提取配置文件(标准)或提取连接(HQL)。这完全取决于你查询对象的方式。看起来你误解了这个问题。我可以查询对象或获取对刚刚保存的对象的引用,只要我有一个Hibernate实体对象和延迟启动的集合。会议仍然开放。现在,集合项具有惰性注释属性,但它们不能保证被启动。我正在寻找一种解决方案,以保证它们在运行时启动(或不启动)。当然,我不想像你建议的那样,用FetchType.EAGER注释@Lob!默认情况下,它们应该是惰性的,但initialize方法可以加载它们,也可以不加载它们,并且这种行为不能保证。