Spring数据Neo4j中的节点标识符
我有一个节点对象,如下所示:Spring数据Neo4j中的节点标识符,neo4j,spring-data-neo4j-4,neo4j-ogm,Neo4j,Spring Data Neo4j 4,Neo4j Ogm,我有一个节点对象,如下所示: @NodeEntity public class Title { private Long id; private String name; public void setName(String name){ this.name=name; } } 名称是此对象的自然标识符。我想确保为name的每个值创建一个节点。使用Spring数据Neo4j执行此操作的推荐方法是什么?我尝试将此逻辑添加到setter,如下所示:
@NodeEntity
public class Title {
private Long id;
private String name;
public void setName(String name){
this.name=name;
}
}
名称是此对象的自然标识符。我想确保为name的每个值创建一个节点。使用Spring数据Neo4j执行此操作的推荐方法是什么?我尝试将此逻辑添加到setter,如下所示:
public void setName(String name){
this.name=name;
this.id = new Long(name.hashCode());
}
但是当我这样做的时候,节点根本没有被创建。我正在使用Neo4jTemplate保存此对象:
Title t = new Title();
t.setName("blah");
neo4jTemplate.save(t);
id由neo4j提供,您不能自己分配。SDN(更具体地说,OGM)没有处理数据库管理的API;你必须自己做。我不确定我是否完全理解您试图实现的目标,但在标题字段上设置一个独特的约束是一个好主意。看 id由neo4j提供,您不能自己分配。SDN(更具体地说,OGM)没有处理数据库管理的API;你必须自己做。我不确定我是否完全理解您试图实现的目标,但在标题字段上设置一个独特的约束是一个好主意。看 SDN 4.x中没有合并功能。您可以执行以下任一操作-
SDN 4.x中没有合并功能。您可以执行以下任一操作-
从SDN4.1.1开始,似乎没有对索引的支持。目前我解决这个问题的方法是为“name”创建一个索引,然后通过将标题修改为数据库中已经存在的等价标题(如果存在的话)来操作我试图保存的对象图。非常麻烦-如果有任何其他方法可以解决这个问题,我将非常感谢您的帮助。从SDN 4.1.1开始,它就不支持索引。目前我解决这个问题的方法是为“name”创建一个索引,然后通过将标题修改为数据库中已经存在的等价标题(如果存在的话)来操作我试图保存的对象图。非常麻烦-如果有任何其他方法可以解决这个问题,我将非常感谢您的帮助。我认为我试图实现的目标与这个问题非常相似:建议使用neo4jTemplate.query()来“合并”节点,而不是保存新节点。感谢您的研究。我认为我试图实现的与这个问题非常相似:建议使用neo4jTemplate.query()来“合并”节点,而不是保存新节点。谢谢你的调查。