使用Cypher自动生成SDN4的ID

时间:2016-06-14 06:02:10

标签: neo4j spring-data-neo4j-4 neo4j-ogm

我创建了一个带有cypher语句文本文件的neo4j模型。现在我想创建一个使用该数据库的应用程序,并且我将使用SDN4。在我的@NodeEntity课程中,我需要声明GraphID类型Long。但是这个ID是由SDN4生成的,我的数据库没有这些ID。有没有办法通过Cypher创建那些,所以我可以简单地将我的Java对象正确映射到数据库中预先存在的节点和关系?

1 个答案:

答案 0 :(得分:1)

@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浏览器/ API等) )。