neo4j使用jdbc插入但无法在同一连接中立即查询

时间:2015-11-25 03:45:23

标签: java jdbc neo4j

问题背景:

 1.database is neo4j 2.3.1, driver using jdbc;  
 2.db connection initialized as a class member, default is auto-commit(not changed); 

为了避免插入重复项,我在插入之前进行查询。程序停止后,发现重复。为什么呢?

代码:

String query = "CREATE (n:LABEL {name:'jack'})";
System.out.println(query);
Statement stmt = dbConnection.createStatement();
stmt.executeUpdate(query);
stmt.close();

2 个答案:

答案 0 :(得分:0)

  1. 使用MERGE +唯一约束
  2. 你如何“检查”
  3. 您必须签入相同的tx并进行写锁定

答案 1 :(得分:0)

调试后我发现对于neo4j-jdbc(v2.1.4),默认的db连接事务级别是TRANSACTION_NONE,然后我把它设置为TRANSACTION_READ_COMMITTED,上面的问题就消失了。所以我认为TRANSACTION_READ_COMMITTED将强制提交前一个插入,但这不是推荐的方式。隔离级别请参考:Difference between read commit and repeatable read