意外的 NotInTransactionException 异常
Unexpected NotInTransactionException exception
我正在尝试开发一个使用 Neo4J 2.2.1 embedded 的 J2EE 应用程序(在 WildFly 8.2 中)。
由于我是从 Neo4J 1.9 迁移它,该应用程序使用索引遗留系统。
我在某些不应 returns 与事务相关的异常的操作中遇到问题。
例如:
for ( Iterator iterator = node.getPropertyKeys().iterator(); iterator.hasNext(); ) {
key = (String)(iterator.next());
....
}
堆栈跟踪:
File (71):ThreadToStatementContextBridge.java - org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.assertInUnterminatedTransaction
File (104):ThreadToStatementContextBridge.java - org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.getTopLevelTransactionBoundToThisThread
File (111):ThreadToStatementContextBridge.java - org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.getKernelTransactionBoundToThisThread
File (64):ThreadToStatementContextBridge.java - org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.instance
File (785):InternalAbstractGraphDatabase.java - org.neo4j.kernel.InternalAbstractGraphDatabase.statement
File (358):NodeProxy.java - org.neo4j.kernel.impl.core.NodeProxy.getPropertyKeys
请注意,如果我调用以下命令,我会遇到同样的错误:
Index<Node> indexNode = ...
...
indexNode.get("users", "test@test.com").getSingle()
其中 indexNode 是先前在事务中创建的索引。
有什么想法吗?
谢谢
Neo4j 1.9 -> 2.0 中最具影响力的突破性变化是强制读取事务。每当您进行读取操作时,您都需要围绕它进行交易。
try (Transaction tx=graphDatabaseService.beginTx()) {
// read stuff - either graph or index operations
...
tx.success(); // make sure to have this, otherwise trouble might happen in case of nested transactions
}
我正在尝试开发一个使用 Neo4J 2.2.1 embedded 的 J2EE 应用程序(在 WildFly 8.2 中)。 由于我是从 Neo4J 1.9 迁移它,该应用程序使用索引遗留系统。
我在某些不应 returns 与事务相关的异常的操作中遇到问题。
例如:
for ( Iterator iterator = node.getPropertyKeys().iterator(); iterator.hasNext(); ) {
key = (String)(iterator.next());
....
}
堆栈跟踪:
File (71):ThreadToStatementContextBridge.java - org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.assertInUnterminatedTransaction
File (104):ThreadToStatementContextBridge.java - org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.getTopLevelTransactionBoundToThisThread
File (111):ThreadToStatementContextBridge.java - org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.getKernelTransactionBoundToThisThread
File (64):ThreadToStatementContextBridge.java - org.neo4j.kernel.impl.core.ThreadToStatementContextBridge.instance
File (785):InternalAbstractGraphDatabase.java - org.neo4j.kernel.InternalAbstractGraphDatabase.statement
File (358):NodeProxy.java - org.neo4j.kernel.impl.core.NodeProxy.getPropertyKeys
请注意,如果我调用以下命令,我会遇到同样的错误:
Index<Node> indexNode = ...
...
indexNode.get("users", "test@test.com").getSingle()
其中 indexNode 是先前在事务中创建的索引。
有什么想法吗?
谢谢
Neo4j 1.9 -> 2.0 中最具影响力的突破性变化是强制读取事务。每当您进行读取操作时,您都需要围绕它进行交易。
try (Transaction tx=graphDatabaseService.beginTx()) {
// read stuff - either graph or index operations
...
tx.success(); // make sure to have this, otherwise trouble might happen in case of nested transactions
}