neo4j - 如何正确实现 getOrCreateNodeWithUniqueFactory 方法

标签 neo4j

好的, 我在 http://architects.dzone.com/articles/and-now-something-completely 中构建了整个程序 除了函数之外,一切正常:getOrCreateNodeWithUniqueFactory()

( 这意味着当我创建一个新节点而不检查它是否已经存在时,它就可以工作,但这不是我的目标,我的目标是当实体存在时不创建新节点。 )

所以我在这里检查了http://docs.neo4j.org/chunked/milestone/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-unique-get-or-create-with-factory

现在我有三个选项,但我喜欢第一个或第二个选项(Cypher 和唯一约束或 UniqueFactory )

我无法弄清楚每个示例的所有代码行是否应该位于同一范围(相同的函数)或两个单独的函数中 如果需要在两个单独的函数中,当我调用它们中的每一个时?

最佳答案

如果您可以使用独特的约束和密码MERGE,那应该就足够了。

否则,我通常做的是为我独特的节点工厂创建一个类

class UserUniqueFactory extends UniqueFactory.UniqueNodeFactory {
    public PersonUniqueFactory(GraphDatabaseService graphDb) { 
       super( graphDb, "users" );
    }

    @Override
    protected void initialize( Node created, Map<String, Object> properties )
    {
        created.addLabel( DynamicLabel.label( "User" ) );
        created.setProperty( "name", properties.get( "name" ) );
    }
    public Node create(String username) {
       return getOrCreate("name",username);
    }
};

用法:

factory = new UserUniqueNodeFactory(graphDb);
try ( Transaction tx = graphDb.beginTx() )
{
    Node node = factory.create(username);
    tx.success();
    return node;
}

关于neo4j - 如何正确实现 getOrCreateNodeWithUniqueFactory 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271928/

相关文章:

neo4j - 在哪里可以找到 v2.0.0-M06 中的 Neo4j shell

neo4j - 如何在 Neo4j 中持续递增,Cypher 太慢?

neo4j - Cypher 中的 OPTIONAL MATCH 和 WHERE

neo4j - 如何在 Cypher 中返回集合联盟的唯一元素?

database - 这个用例是图形数据库应用程序的候选者吗?

docker - Neo4j 和 Gephi Graph Streaming 插件 : Connection refused

java - neo4j-uuid 由于找不到类而导致数据库引擎启动异常

neo4j - 启用远程访问 neo4j 4.2 社区版

java - 如何使用 IN 运算符将参数传递给密码?

javascript - 使用node js在neo4j中创建 Node 时出现错误