我正在使用远程API调用来获取对象。使用延迟设置,在客户端访问lazy=true
设置的子集时{0}抛出异常。我试图改变行为,以便不抛出异常。我在hibernate事件监听器中找到了"org.hibernate.LazyInitializationException"
,但无法获得大量的使用帮助。
我是在正确的轨道上吗?还是有其他方法可以解决这种情况?
答案 0 :(得分:0)
如果每次使用实体时都需要集合,那么最好的方法是配置。默认情况下,集合是延迟加载的。您可以将它们配置为热切加载(换句话说:预加载)。每当您要求实体时,您将始终获得该集合。
但是,如果您在某些时候只需要收集(延迟加载旨在解决的方案),您有几个选择:
答案 1 :(得分:0)
对于延迟加载的关联,Hibernate将生成用于延迟初始化的代理。因此,您可以使用Hibenrate.isInitialize()
API来确定该代理是否已初始化。因此,您可以根据初始化的代理控制流。如果代理未初始化,则尚未获取这些实体(在访问此类属性值时将发生平均加载),因此您可以控制流程。