【发布时间】:2014-12-23 06:25:05
【问题描述】:
我想在 neo4j 中创建独特的关系。我的要求是,我有一个所有节点的公共资源,所以如果节点 A 正在使用它,那么节点 B 不能使用它,意味着不能创建 B 与资源的关系。那我该怎么做呢?
【问题讨论】:
标签: java neo4j cypher spring-data-neo4j
我想在 neo4j 中创建独特的关系。我的要求是,我有一个所有节点的公共资源,所以如果节点 A 正在使用它,那么节点 B 不能使用它,意味着不能创建 B 与资源的关系。那我该怎么做呢?
【问题讨论】:
标签: java neo4j cypher spring-data-neo4j
我很确定目前你不能让 neo4j 为你强制执行。我认为每当您尝试添加关系时都需要检查。这是 cypher 中的一个示例,但如果您使用的是 java,则可能使用的是较低级别的 API:
MATCH (a:LabelA {id: '123abc'), (res:Resource {id: '321cba'})
WHERE NOT(()-[:has_resource]->res)
CREATE a-[:has_resource]->res
【讨论】:
TransactionEventHandler,它可以让你编写 java 代码来拥有事件处理程序。见neo4j.com/api_docs/1.4/org/neo4j/graphdb/event/…