无法处理Neo4j的java-rest-binding上的事务

时间:2014-05-14 07:22:02

标签: transactions neo4j

我在项目中使用了Java REST binding Neo4j,但我在处理交易方面遇到了问题。

当名称为Error时,它可以成功将节点插入到DB ...中,如果我取消Transaction控制,则该事件仍然有效。

final RestAPI api = new RestAPIFacade("http://localhost:7474/db/data");
final RestCypherQueryEngine engine = new RestCypherQueryEngine(api);

Transaction tx = api.beginTx();
try {
    String name = "Error";
    Map<String, Object> subMap = new HashMap<String, Object>();
    subMap.put("name", name);
    subMap.put("age", 17);
    Node node = api.createNode(subMap);
    Label label = DynamicLabel.label("Student");
    node.addLabel(label);

    if("Error".equals(name)) {
        tx.failure();
    }
    else {
        tx.success();
    }
} finally {
    tx.finish();
}

2 个答案:

答案 0 :(得分:1)

我发现我必须将下面的参数设置为true,我可以控制交易!

org.neo4j.rest.batch_transaction=true

但是关于neo4j-rest-binding的事务有一个问题,你不能在事务中使用get方法/ cypher。您只能将方法/密码放在何时想要更新/添加/删除事务中的节点或关系。

答案 1 :(得分:0)

REST上没有事务,每个http请求只有一个TX。批处理操作有一个假的tx,但你必须启用它。

我宁愿建议使用支持Neo4j 2.x

的线路事务的JDBC驱动程序

https://github.com/neo4j-contrib/neo4j-jdbc/tree/2.0