如何在Spring Data Neo4J 3.0.0(发布)中向节点添加第二个标签?

时间:2015-04-21 10:34:44

标签: java spring neo4j cypher spring-data-neo4j

在Neo4J中我有@NodeEntity Person

我希望能够添加其他标签,例如:USER:CUSTOMER:OWNER:AGENT等。

似乎spring-data-neo4j:3.0.0-RELEASE支持@Labels注释,但在尝试使用时会得到NullPointerException

@NodeEntity
public class Person {

    @GraphId
    Long id

    @Indexed(unique=true)
    String email

    @Labels // <- Seems this is unsupported.
    private Collection<String>labels

    public void addLabel(String label) {
        this.labels.add(label) // <- NullPointer thrown here.
    }
}

我认为这是因为它尚未得到支持。如果确实如此,有人会给我一个如何通过更新其背后的存储库来实现相同结果的示例,添加手动@Query注释来添加标签吗?

我不确定如何:

  1. 引用查询中的当前节点。
  2. 在调用save()方法并创建节点后执行cypher。

1 个答案:

答案 0 :(得分:2)

如果您重新构建域对象以支持继承,SDN将根据继承树派生其他标签。

如果您想要多个标签,请扩展父类,您将拥有所需的标签。

例如,如果

@NodeEntity
public class User extends Customer {

}

将生成两个标签:User和:Customer。

有关使用Neo4j的抽象类,请参阅Use @NodeEntity on interface/abstract class