当前位置: 首页 > 知识库问答 >
问题:

Springdata Neo4j主键

荀博
2023-03-14

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

Class abc{
@Indexed(unique=true)
Long abc_id;
String abc_name;
}

new abc(1,"asd")// creates node with id: 1 name : asd
new abc(1,"xyz")// replaces asd with xyz . 

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

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

共有1个答案

穆睿才
2023-03-14

目前,@Indexed实现没有对任何重复抛出任何异常,如在Spring data neo4j论坛的JIRA票证中引用的:这里和这个线程中

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

从文件中

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
 类似资料:
  • nosql数据库具有无模式属性,因此我们可以向节点或关系添加任何字段/属性。但是如果我使用Spring数据作为框架,我必须预先定义节点和关系对象的字段。Spring数据Neo4j似乎不支持动态插入字段...是真的吗?

  • 我意识到这里问了一个类似的问题,但是我试图理解SDN创建一个匹配我的类名的标签以及创建一个以下划线为前缀的相同标签背后的原因。 例如,我有一个病人类。当我通过我的Neo4j存储库创建我的@NodeEntity修饰的患者类,然后通过Neo4j网络控制台查询它时,我看到患者和_Patient作为标签。 作为对这个问题的扩展,假设我有以下表示节点的类继承层次结构: 当我将患者实例保存到数据库中时,它将有

  • 主从:“从机”的“从”可以理解为“仆从”,仆从是要帮主人干活的,“从机”是需要提供读数据的功能的; 主备:“备机”一般被认为仅仅提供备份功能,不提供访问功能。 所以使用“主从”还是“主备”,是要看场景的,这两个词并不是完全等同。 一般”主从集群“和”主备集群“一起使用,让备机也提供读的服务,当主机宕机时备机代替主机工作提供写服务,其他从机继续提供读服务。 主主: 两个主库同时提供服务,负载均衡 第

  • 主要内容:示例,删除主键主键(Primary Key)由表中的一个或者多个字段构成,用来唯一标识表中的每一行记录。可以将主键类比为学号、身份证号、车牌号或者 ID。 主键必须包含唯一值,换句话说,所有记录的主键都不能出现相同的值。此外,主键必须是一个具体的值,不能是 NULL 值。 当主键包含多个字段时,又称为复合键(Composite Primary Key)。 注意事项 在设计主键时,应使用尽可能少的字段,这不但能减

  • 主要内容:在创建表时设置主键约束,在修改表时添加主键约束,删除主键约束主键(PRIMARY KEY)的完整称呼是“主键约束”,是 MySQL 中使用最为频繁的约束。一般情况下,为了便于 DBMS 更快的查找到表中的记录,都会在表中设置一个主键。 主键分为单字段主键和多字段联合主键,本节将分别讲解这两种主键约束的创建、修改和删除。 使用主键应注意以下几点: 每个表只能定义一个主键。 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行

  • 主要内容:主键介绍,Oracle PRIMARY KEY约束示例在本教程中,您将学习如何使用Oracle 约束来管理表的主键。 主键介绍 主键是表中列的唯一标识表中的行的一列或多列的组合。 以下是设置列成为主键的规则: 主键列不能包含值或空字符串。 主键值在整个表中必须是唯一的。 主键值不应随时间而改变。 根据这些规则,以下是对主键的建议: 首先,主键应该是没有意义的。 有时,您可能需要使用有意义的数据,例如:社会安全号码(SSN),车辆识别号码(VIN),电

  • 问题内容: 使用表的负主键是否有任何影响(SQL Server 2005中的Identity Increment -1,Identity Seed -1)? 原因是我们正在创建一个新数据库来替换现有数据库。这两个数据库之间有相似的表,我们希望信息的“源”对于我们的应用程序是透明的。方法是创建从两个数据库合并表的视图。否定PK可确保身份不重叠。 问题答案: 就像其他人所说的那样,数据库很好。 但这对

  • 注意 当前章节中涉及的配置一般适用于关系数据库。这里展示的扩展方法在你安装了关系数据库提供程序之后就能获得(由Microsoft.EntityFrmeworkCore.Relational 程序包共享)。 主键约束是为每个实体类型的键引入的。 惯例 按照惯例,数据库中的主键会被命名为 PK_<实体类型名称>。 数据注解 不能使用数据注解来配置特定于关系数据库的主键。 流式 API 可以使用流式 A