当在SDN 4.1.X中使用prototype
作用域Session
与@Transactional
注释时,我看到以下情况除外:org.neo4j.ogm.exception.TransactionManagerException:当原型范围中使用会话时,“该交易对于该线程不是当前交易”
org.neo4j.ogm.exception.TransactionManagerException: "Transaction is not current for this thread"
我最近升级我的春节,引导项目SDN 4.1.X和Neo4j的OGM 2.0.3。看起来,当启动多个Session
时(由于作用域为prototype
)DefaultTransactionManager
在提交期间无法找到先前打开的事务的引用。
我看到静态ThreadLocal
每次会话创建时都会被删除。
但同样的项目正在与SDN 4.0.0和OGM 1.1.4版本正常工作。所以作为一个解决方案,我不得不作出Session
thread
作用域。任何人都可以澄清对SDN/OGM进行了哪些修改可能导致这种情况。或者这是SDN 4.1.X中的预期行为?
您正在从OGM 1.x升级到2.x.那里有很多重大变化。 OGM 2.0.x允许使用'线程'范围会话,但是我的建议是不使用它。你试图达到什么目标,需要在应用程序的整个生命周期内保留所有数据库对象?如果您正在升级,我强烈建议迁移到SDN 4.2/OGM 2.1,因为这些版本中的变化比4.1/2.0更多。 – digx1
我在答案部分提供了更多信息。请让我知道你的意见。 – Sourav