关系已创建但未存储在嵌入式 neo4j 中

哈姆纳

我有一个奇怪的问题,我可以使用 createRelationshipTo() 方法在嵌入式 neo4j 中创建关系。但是当我使用 getRelationships() 方法访问这些关系时,找不到任何关系。当我创建关系并立即使用 getRelationships() 方法时,就会找到该关系。但后来,这种关系消失了。

例如,在 sampleMethod() 中,我在同一个方法中创建和检索关系,因此它返回两个关系,但是当我尝试在 sampleMethod2() 中使用相同的 getRelationships() 方法检索相同的关系时,它什么也没给出。

public ArrayList<String> sampleMethod() {
        ArrayList<String>list = new ArrayList<String>();
        DatabaseConnection dbConnection = new DatabaseConnection();
        GraphDatabaseService graphDb = dbConnection.connectToDatabase();
        Transaction tx = graphDb.beginTx();

        Node user = graphDb.findNode(Label.label("User"), "userName", "hamna123");
        Node restaurant = graphDb.findNode(Label.label("Restaurants"), "name", "The Grand Regency");
        Relationship rel = user.createRelationshipTo(restaurant, RelationshipType.withName("Visited"));
                    Relationship rel2 = user.createRelationshipTo(restaurant, RelationshipType.withName("Favorite"));
        for (Relationship relationship : user.getRelationships()) {
            String found = relationship.getType().name().toString();
            list.add(found);
        }
        tx.close();
        //graphDb.shutdown();
        return list;

    }

public ArrayList<String> sampleMethod2() {
        ArrayList<String>list = new ArrayList<String>();
        DatabaseConnection dbConnection = new DatabaseConnection();
        GraphDatabaseService graphDb = dbConnection.connectToDatabase();
        Transaction tx = graphDb.beginTx();
        Node user = graphDb.findNode(Label.label("User"), "userName", "hamna123");
                Iterable<Relationship> relations = user.getRelationships();
        for (Relationship relationship : relations) {
            String found = relationship.getType().name().toString();
            list.add(found);
        }
        tx.close();
        graphDb.shutdown();
        return list;

    }
逻辑

不要在没有提交的情况下关闭事务否则执行回滚。

所以 :

  • 使用catch-with-resource模式关闭交易
  • 将 tx 作为成功放在代码的末尾

例子 :

try ( Transaction tx = db.beginTx())
{
    Node myNode = db.createNode();
    myNode.setProperty( "name", "my node" );
    tx.success(); // commit the tx
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章