【发布时间】:2016-11-14 10:16:43
【问题描述】:
在 SDN 4.1.X 中使用 prototype 范围内的 Session 和 @Transactional 注释时,我看到以下异常:
org.neo4j.ogm.exception.TransactionManagerException: "Transaction is not current for this thread"
我最近将我的 Spring Boot 项目升级到 SDN 4.1.X 和 Neo4j OGM 2.0.3。似乎当启动多个Sessions 时(由于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 允许使用
thread范围会话,但我的建议是不要使用它。您想要实现什么需要在应用程序的生命周期内将所有数据库对象保留在内存中?如果您正在升级,我强烈建议您迁移到 SDN 4.2/OGM 2.1,因为这些版本中的重大变化比 4.1/2.0 还要多。 -
我已在答案部分提供了更多信息。请让我知道您对此的看法。
标签: neo4j spring-data-neo4j spring-data-neo4j-4 neo4j-ogm