2016-07-07 54 views
0

我在我一直在工作的项目中遇到一些延迟初始化的问题。有时候我正在使用@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)来咨询我的数据库,这通常工作正常,除非我尝试初始化依赖实体。不支持TransactionAttribute的懒惰异常

这些依赖实体都是用“fetch = FetchType.LAZY”(它们必须是)注释的,我试着让它们使用Hibernate.initialize(something);.当我这样做时,我得到org.hibernate.LazyInitializationException:无法初始化代理 - 没有会话。

我试图在我的persistence.xml中使用<property name="hibernate.enable_lazy_load_no_trans" value="true">但没有成功(就像我没有做任何事情)。

你们是否知道为什么我必须打开一个事务才能从我的数据源中获取信息,以及是否有任何方法可以保持我的事务属性不受支持?

回答

1

要为实体及其关系拥有相同的视图,必须将关系加载到相同的事务IIRC中。 因此,如果你有一个没有Tx的Bean,持久性不能保证一致性。