我在项目中使用了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();
}
答案 0 :(得分:1)
我发现我必须将下面的参数设置为true
,我可以控制交易!
org.neo4j.rest.batch_transaction=true
但是关于neo4j-rest-binding的事务有一个问题,你不能在事务中使用get方法/ cypher。您只能将方法/密码放在何时想要更新/添加/删除事务中的节点或关系。
答案 1 :(得分:0)
REST上没有事务,每个http请求只有一个TX。批处理操作有一个假的tx,但你必须启用它。
我宁愿建议使用支持Neo4j 2.x
的线路事务的JDBC驱动程序