假设我检索一个对象用户,该对象用户与惰性声明的UserParameters具有一对多关系。 现在假设我通过标记为
的业务方法检索该User对象。@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
,然后在该方法上执行类似userObject.getUserParameters().get(0)
的操作。但是我得到一个错误:
无法延迟初始化角色集合:... *** ...,无法 初始化代理-没有会话
由于懒惰了它尝试连接到数据库的参数,但是由于没有事务,我们(由于尚不完全清楚的原因)也没有会话(这是必需的)。
现在我该怎么办,每次方法访问任何对象的某些惰性属性时,都不应将其标记为必需?
我应该手动打开一个会话,在访问惰性属性之前添加该实体吗?
原因是我执行的通话很长,完全在TransactionRolledBack上进行。但是,此调用仅从数据库读取,而不持久化或写入任何内容(因此我将其设置为Transaction NOT_SUPPORTED)。但是,在此过程的中间,需要访问一些惰性属性,这需要一个活动的休眠会话,这使我不必处于非事务阶段。
这是我之前其他人遇到的一些常见问题吗?有什么最佳做法吗?
谢谢
Davide