我使用neo4j-rest-graphdb 2.0.1(目前无法使用2.0.3)来访问独立的Neo4j社区2.0.3 REST服务器。 特别是,我希望能够使用neo4j-rest-graphdb将查询分组到事务中。 README说:
在1.8中,它尝试将tx中的所有操作收集为 批处理操作,然后在服务器上执行。
这暗示了在" tx"中检索到的结果。 只有在你调用tx.success和之后才能立即使用 tx.finish
但是,使用事务的以下(最简单的)代码
db = new RestGraphDatabase(<SOMEURL>, <SOMEUSER>, <SOMEPASSWORD>);
System.setProperty(Config.CONFIG_BATCH_TRANSACTION,"true");
Transaction tx = db.beginTx();
// line where exception is thrown
ResourceIterable<Node> it = db.findNodesByLabelAndProperty(DynamicLabel.label(type), "@id", id);
Node result = Iterables.getOnlyElement(it);
tx.success();
tx.finish();
tx.close();
抛出一个
java.lang.IllegalStateException: received org.neo4j.rest.graphdb.RequestResult@5acc5fb1
at org.neo4j.rest.graphdb.ExecutingRestAPI.toNodeIterableResult(ExecutingRestAPI.java:284)
at org.neo4j.rest.graphdb.ExecutingRestAPI.getNodesByLabelAndProperty(ExecutingRestAPI.java:273)
at org.neo4j.rest.graphdb.RestAPIFacade.getNodesByLabelAndProperty(RestAPIFacade.java:344)
at org.neo4j.rest.graphdb.RestGraphDatabase.findNodesByLabelAndProperty(RestGraphDatabase.java:147)
at {the marked line in the above code}
调试得出Neo4j DB返回的RequestResult字段具有以下值:
当我设置System.setProperty(Config.CONFIG_BATCH_TRANSACTION,"false");
而不是&#34; true&#34;时,不会抛出任何异常,并且正确返回正确的请求,但不在事务上下文中。
为什么会这样?
如何通过neo4j-rest-graphdb获得(基于批处理的)事务才能正常工作?
答案 0 :(得分:1)
我问了一个类似的问题here,看起来这个库已经停止了。仅通过具有密码端点的HTTP支持事务。 Spring data Neo4j似乎是要走的路。否则,您可以使用JDBC层(Example project here)。我今天刚刚学会了这个,我必须改变整个项目的代码才能使用Spring。叹息。