我正在使用Neo4j ogm核心版本3.0.2。在我的图表中,我有一个名为gender的节点,可以简单地为男性或女性。如果某个节点已经存在,我希望它只是更新与现有节点的关系,而不是创建一个新节点。
以下是我设置性别的方法。
Gender personGender = new Gender();
Iterator<Map<String, Object>> result =
helper.queryByEntityAndName("Gender", gender);
if (result != null) {
personGender = (Gender) result.next().get(queryNotation);
} else {
personGender.setValue(gender);
}
person.setGender(personGender);
帮助程序queryByEntityAndName看起来像这个
public Iterator<Map<String, Object>> queryByEntityAndName(String entityName, String value) {
String query = "match (e:" + entityName + "" +
" {name: \"" + value + "\"}) return e";
Iterable<Map<String, Object>> result = session.query(query, Collections.EMPTY_MAP);
Iterator<Map<String, Object>> resultIterator = result.iterator();
if (resultIterator.hasNext())
return resultIterator;
return null;
}
我将性别设置为值唯一
@Index(unique = true)
private String value;
在Person类中,Gender设置如下
@Relationship(type = "HAS_GENDER_OF")
private Gender gender;
答案 0 :(得分:0)
您必须在Gender字符串属性中添加@Id
注释。
除此之外,我认为可以通过用类似的方式替换手动构建的查询来简化代码
session.load(Gender.class, genderId)