我想使用 Java API 创建一个唯一的关系(通过 Cypher 查询我可以创建唯一的)。
例如:
START n=node:node_auto_index(name='Neo'),
t=node:node_auto_index(name='The Architect')
CREATE UNIQUE n-[r:SPEAKS_WITH]-t
RETURN n AS Neo,r
提前致谢!
java API 是较低级别的。据我所知,没有方便的方法,所以你需要自己编写代码。未经测试,但您可能明白:
Transaction transaction = graphDb.beginTx();
try {
ReadableIndex<Node> autoNodeIndex = graphDb.index().getNodeAutoIndexer().getAutoIndex();
Node n = autoNodeIndex.get("name", "Neo").getSingle();
Node a = autoNodeIndex.get("name", "The Architect").getSingle();
tx.acquireWriteLock(n);
tx.acquireWriteLock(a);
Boolean created = false;
for(Relationship r : n.getRelationships(MyRels.SPEAKS_WITH) {
if(r.getOtherNode(n).equals(a)) { // put other conditions here, if needed
created = true;
break;
}
}
if(!created) {
n.createRelationshipTo(a, MyRels.SPEAKS_WITH);
}
tx.success();
} finally {
tx.finish();
}
更新了马蒂亚斯的评论