我有一个从外部代码获取JPA实体的服务。在这个服务中,我想迭代一个延迟加载的集合,该集合是该实体的一个属性,以查看客户端是否相对于数据库中的当前版本添加了某些内容。如何测试延迟加载的JPA集合是否已初始化?
但是,客户端可能从未触摸收集,因此它尚未初始化。这导致众所周知的
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.example.SomeEntity.
当然,如果客户从未接触过的收集,我的服务没有检查其可能发生的变化。问题是,我似乎无法找到一种方法来测试集合是否已初始化。我想我可以打电话size()
,如果它抛出LazyInitializationException
我会知道,但我试图不依赖于这种模式。
某处有一些isInitialized()
方法吗?
这正是我要找的,谢谢!问题是,即使我碰巧使用Hibernate,代码应该是JPA兼容的,所以不幸的是我没有真正能够使用这个:( – akira 2010-12-01 10:36:38
没有什么标准。 – Bozho 2010-12-01 11:10:21