我的项目目前使用 Spring-Data-Neo4J 3.3.0,我正在尝试使用新的 4.0.0.Release 版本。在我的代码中,我有以下代码:
neo4jTemplate.createRelationshipBetween(eltOrRel, attribute, valueClass, GraphRelationType.HAS_ATT_VALUE, true)
这段代码的等价物是什么(请在新版SDK的api中使用这个方法?
更特别的是,我不知道如何创建给定类型的关系,而是为特定的类创建关系。请问如何用密码写出这样的作品?
@Luanne 这是我的问题的一个小例子。
类元素:
@NodeEntity
public class Element {
@GraphId
private Long id;
private int age;
private String uuid;
@Relationship(type = "HAS_ATT_VALUE")
private Set<HasAttValue> values = new HashSet<HasAttValue>();
...
类属性:
@NodeEntity
public class Attribute {
@GraphId
private Long id;
private String attName;
和类 HasAttValue :
@RelationshipEntity(type = "HAS_ATT_VALUE")
public class HasAttValue {
@GraphId
private Long id;
@StartNode
Element element;
@EndNode
Attribute attribute;
private String value;
public HasAttValue() {
}
public HasAttValue(Element element, Attribute attribute, String value) {
this.element = element;
this.attribute = attribute;
this.value = value;
this.element.getValues().add(this);
}
在第一种情况下,一切都像魅力一样工作,并且在您的示例中,我有下图(在服务器浏览器中查看)以及我在 HAS_ATT_VALUE 关系实体上的值:
(Element)->[HAS_ATT_VALUE]->(attribute)
但我的问题是在以下情况下(与以前的 SDN 配合得很好)。而不是 HasAttValue 上一课,我有:
@RelationshipEntity(type = "HAS_ATT_VALUE")
public abstract class HasAttValue<T> {
@GraphId
private Long id;
@StartNode
Element element;
@EndNode
Attribute attribute;
private T value;
public HasAttValue() {
}
public HasAttValue(Element element, Attribute attribute, T value) {
this.element = element;
this.attribute = attribute;
this.value = value;
this.element.getValues().add(this);
}
例如两个子类。第一 :
public class HasBooleanValue extends HasAttValue<Boolean> {
public HasBooleanValue() {
}
public HasBooleanValue(Element elt, Attribute attribut, Boolean value) {
super(elt, attribut, value);
}
}
第二个 :
public class HasStringValue extends HasAttValue<String> {
private String locale;
public HasStringValue() {
}
public HasStringValue(Element element, Attribute attribut, String value) {
super(element, attribut, value);
}
在这种情况下,图表如下所示:
(element)->[HAS_ATT_VALUE]->(HasBooleanValue|HasStringValue)->[ATTRIBUTE]->(Attribute)
和图形中的另一个弧(元素)<-[ELEMENT]-(HasBooleanValue|HasStringValue)
那么如何才能始终拥有 (element)->[HAS_ATT_VALUE]->(attribute) 其中“has_att_value”是一个包含数据但在我的 java 代码中具有不同实现的关系实体?同样,当我使用 neo4jTemplate.createRelationshipBetween(eltOrRel, attribute, valueClass, GraphRelationType.HAS_ATT_VALUE, true) 创建我的“hasAttValue”关系实体时,这在 SDN3 中运行良好。
非常感谢