Springdata Neo4j主键

Springdata Neo4j主键,neo4j,spring-data-neo4j,Neo4j,Spring Data Neo4j,我是Neo4j和SDN的新手。我试图使用@index(unique=true)为我的实体创建主键。它创建唯一的节点,但如果使用索引的相同属性值,它将替换其他属性。 例如: 但是,我想抛出一个关于主键冲突/重复节点的异常 有什么方法可以达到同样的效果吗?目前@Indexed实现不会对spring data neo4j论坛上的JIRA票证中引用的任何重复项引发任何异常:以及 您可以创建运行cypher查询的唯一节点(这将更快)。可以使用创建或更新节点 从文件中 MERGE either matche

我是Neo4j和SDN的新手。我试图使用@index(unique=true)为我的实体创建主键。它创建唯一的节点,但如果使用索引的相同属性值,它将替换其他属性。 例如:

但是,我想抛出一个关于主键冲突/重复节点的异常


有什么方法可以达到同样的效果吗?

目前@Indexed实现不会对spring data neo4j论坛上的JIRA票证中引用的任何重复项引发任何异常:以及

您可以创建运行cypher查询的唯一节点(这将更快)。可以使用创建或更新节点

从文件中

MERGE either matches existing nodes and binds them, or it creates new data and binds that. It’s like a combination of MATCH and CREATE that additionally allows you to specify what happens if the data was matched or created.
因此,如果您想更新任何节点或创建一个不存在该模式的节点,您可以执行如下操作

MERGE (keanu:Person { name:'Keanu Reeves' })
ON CREATE SET keanu.created = timestamp()
ON MATCH SET keanu.lastSeen = timestamp()
RETURN keanu

谢谢。因此,使用MERGE是实现这一点的唯一方法,或者对于Spring-data-neo4j,有一些替代解决方案。。这家伙尝试了几种方法来实现它,但我更喜欢使用merge创建。要使用merge创建或更新节点,您是在SDN中使用查询注释还是在核心JAVA API中使用查询注释。当我了解到核心JAVA API在某些情况下比SDN更好时,我有这个疑问。我创建了一个SDN项目,并使用存储库与数据库交互。使用Neo4jTemplate而不是存储库是否会更好。请提前感谢。
MERGE (keanu:Person { name:'Keanu Reeves' })
ON CREATE SET keanu.created = timestamp()
ON MATCH SET keanu.lastSeen = timestamp()
RETURN keanu