2016-06-14 54 views
0

我已经创建了的cypher声明文本文件Neo4j的模型。现在我想创建一个使用这个数据库的应用程序,我将使用SDN4。在我@NodeEntity类,我需要有申报Long类型的GraphID。但是这个ID由SDN4生成,而我的数据库没有这些ID。有没有办法让那些通过Cypher创建的,所以我可以简单地让我的Java对象正确映射到数据库中预先存在的节点和关系?使用暗号来自动生成的ID为SDN4

回答

1

@GraphId字段总是通过的Neo4j分配内部节点或关系ID,并且不能被设置为自定义值。您可能希望将自己的ID值指定为该节点的属性。 这可以通过使用SDN添加自己的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节点,装载实体将填充这些id领域中完成你的域对象。

如果您没有自己的主键但仍然需要ID,您可以使用UUID plugin,它们会在通过任何方式(SDN/Neo4j浏览器/ API等)创建节点时自动为节点分配UUID。

+0

只是为了澄清,所述'graphID'上面提到由SDN或Neo4j的填充?当我从Cypher创建节点时,它会得到一个ID。这个ID会自动映射到'graphID'吗?在这种情况下,我不需要额外的UUID字段 - 我只想让我的对象正确映射到预先存在的节点上!我的印象是GraphID必须由SDN生成... – aaaaarrrgghhh

+0

graphId由Neo4j生成。当您通过Cypher创建节点时,Neo4j会分配此ID。当您通过SDN加载节点时,该ID将映射到您的graphId – Luanne