好的,
我在 http://architects.dzone.com/articles/and-now-something-completely 中构建了整个程序
除了函数之外,一切正常:getOrCreateNodeWithUniqueFactory()
( 这意味着当我创建一个新节点而不检查它是否已经存在时,它就可以工作,但这不是我的目标,我的目标是当实体存在时不创建新节点。 )
现在我有三个选项,但我喜欢第一个或第二个选项(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/