neo4j-rest-graphdb无法处理与Neo4J 2.0.x的交易

时间:2014-07-16 08:56:55

标签: java rest transactions neo4j

我使用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字段具有以下值:

  • 状态:0
  • batchId:1
  • batchResult:true
  • string:&#34;&#34;
  • 所有其他字段:null

当我设置System.setProperty(Config.CONFIG_BATCH_TRANSACTION,"false");而不是&#34; true&#34;时,不会抛出任何异常,并且正确返回正确的请求,但不在事务上下文中。 为什么会这样? 如何通过neo4j-rest-graphdb获得(基于批处理的)事务才能正常工作?

1 个答案:

答案 0 :(得分:1)

我问了一个类似的问题here,看起来这个库已经停止了。仅通过具有密码端点的HTTP支持事务。 Spring data Neo4j似乎是要走的路。否则,您可以使用JDBC层(Example project here)。我今天刚刚学会了这个,我必须改变整个项目的代码才能使用Spring。叹息。