java - Neo4j 索引未找到节点

标签 java indexing nullpointerexception neo4j

我尝试遵循文档,最终得到了 Neo4j 1.8 的这段代码:

graphDB = new GraphDatabaseFactory()
            .newEmbeddedDatabaseBuilder( BASE_FOLDER + NEO4J_PATH )
            .newGraphDatabase();

registerShutdownHook();

//Check if there are any indexes
System.out.println(Arrays.toString(graphDB.index().nodeIndexNames()));
Index<Node> testIndex = graphDB.index().forNodes("test");

Transaction tx = graphDB.beginTx();
try {
    String nameKey = "name";
    String nameValue = "Gevorg";

    //The following 3 lines will be commented out 
    //when I run the program the second time
    Node me = graphDB.createNode();
    me.setProperty(nameKey, nameValue);
    testIndex.add(me, nameKey, nameValue);

    Node meAgain = testIndex.get(nameKey, nameValue).getSingle();
    System.out.println(meAgain.getProperty(nameKey));

} finally {
    tx.finish();
}

这将按预期打印以下内容:

[] //There is no index at the very beginning
Gevorg

程序终止后,我对节点/索引的创建进行了注释,然后再次运行程序以遇到 NullPointerException(meAgain 为 null)。由于程序首先打印 [test] 但随后 Node meAgain = testIndex.get(nameKey, nameValue).getSingle(); 无法检索节点,因此可以正确检索索引。我尝试了使用和不使用事务的情况。我做错了什么??

最佳答案

在调用 tx.finish 之前,您需要将 Tx 标记为成功

tx.success()

HTH

/彼得

关于java - Neo4j 索引未找到节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12738501/

相关文章:

java - jtable 引用数字的着色单元格

java - Spring NullPointerException 尽管使用了相关注释

java - Firebase 用户分组

java - 通过 JMS 聊天。如何链接组件? ( Wicket 口、activemq、j2ee)

java - 在 servlet 响应中正确写入 HTML 页面

oracle - 如何使用子查询 Oracle 优化此 SELECT

python - 如何在 SPSS Python 中查找变量的索引值

java - 在 GWT 的 Java 或 PHP 之间进行选择!

javascript - 有什么方法可以更改数组元素索引,使其从 1, 2, 3, 4 而不是 0, 1 ,2, 3 开始?

java - 在 Java 中表示 "Both not null and not equal"的实用方法