使用 Cypher 为 SDN4 自动生成 ID
Using Cypher to autogenerate IDs for SDN4
我创建了一个带有 cypher
语句文本文件的 neo4j 模型。现在我想创建一个使用这个数据库的应用程序,我将使用 SDN4。在我的 @NodeEntity
class 中,我需要声明 Long
类型的 GraphID
。但是这个 ID 是由 SDN4 生成的,而我的数据库没有这些 ID。有没有办法让那些通过 Cypher 创建的,这样我就可以简单地将我的 Java 对象正确映射到数据库中预先存在的节点和关系?
@GraphId
字段始终是Neo4j分配的内部节点或关系ID,不能设置为自定义值。您可能希望将自己的 ID 值分配为节点的 属性。
这可以通过添加您自己的 id 字段来完成-
@GraphId Long graphId; //required, this is the internal node/rel ID that must never be assigned by your code
Long id; //your own primary key
现在,当您的数据库包含由您的 Cypher 脚本中的语句分配的 属性 id
的节点时,通过 SDN 加载实体将填充您域中的这些 id
字段对象。
如果您没有自己的主键但无论如何都想要一个 ID,您可以使用 UUID plugin 它会在通过任何方式创建节点时自动将 UUID 分配给节点 (SDN/Neo4j browser/API 等)。
我创建了一个带有 cypher
语句文本文件的 neo4j 模型。现在我想创建一个使用这个数据库的应用程序,我将使用 SDN4。在我的 @NodeEntity
class 中,我需要声明 Long
类型的 GraphID
。但是这个 ID 是由 SDN4 生成的,而我的数据库没有这些 ID。有没有办法让那些通过 Cypher 创建的,这样我就可以简单地将我的 Java 对象正确映射到数据库中预先存在的节点和关系?
@GraphId
字段始终是Neo4j分配的内部节点或关系ID,不能设置为自定义值。您可能希望将自己的 ID 值分配为节点的 属性。
这可以通过添加您自己的 id 字段来完成-
@GraphId Long graphId; //required, this is the internal node/rel ID that must never be assigned by your code
Long id; //your own primary key
现在,当您的数据库包含由您的 Cypher 脚本中的语句分配的 属性 id
的节点时,通过 SDN 加载实体将填充您域中的这些 id
字段对象。
如果您没有自己的主键但无论如何都想要一个 ID,您可以使用 UUID plugin 它会在通过任何方式创建节点时自动将 UUID 分配给节点 (SDN/Neo4j browser/API 等)。