不支持带有 TransactionAttribute 的惰性异常
Lazy Exception with TransactionAttribute as not supported
我在我一直从事的项目中遇到延迟初始化的一些问题。有时我正在使用 @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
查询我的数据库,这通常工作正常,除非我尝试初始化依赖项实体。
这些依赖实体都用“fetch = FetchType.LAZY
”注释(它们必须是),我尝试使用 Hibernate.initialize(something); 来获取它们。当我这样做时,我得到 org.hibernate.LazyInitializationException: could not initialize proxy - no Session.
我尝试在我的 persistence.xml 中使用 <property name="hibernate.enable_lazy_load_no_trans" value="true">
但没有成功(就像我什么都没做一样)。
你们知道为什么我必须打开一个事务才能从我的数据源中获取信息吗?是否有任何方法可以让我的事务属性保持不受支持?
要对实体及其关系具有相同的视图,关系必须加载到同一事务 IIRC 中。
所以如果你有一个没有 Tx 的 Bean 持久化是不能保证一致性的。
我在我一直从事的项目中遇到延迟初始化的一些问题。有时我正在使用 @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
查询我的数据库,这通常工作正常,除非我尝试初始化依赖项实体。
这些依赖实体都用“fetch = FetchType.LAZY
”注释(它们必须是),我尝试使用 Hibernate.initialize(something); 来获取它们。当我这样做时,我得到 org.hibernate.LazyInitializationException: could not initialize proxy - no Session.
我尝试在我的 persistence.xml 中使用 <property name="hibernate.enable_lazy_load_no_trans" value="true">
但没有成功(就像我什么都没做一样)。
你们知道为什么我必须打开一个事务才能从我的数据源中获取信息吗?是否有任何方法可以让我的事务属性保持不受支持?
要对实体及其关系具有相同的视图,关系必须加载到同一事务 IIRC 中。 所以如果你有一个没有 Tx 的 Bean 持久化是不能保证一致性的。