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

标签 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() 方法并创建节点后执行密码。

最佳答案

如果您重构域对象以支持继承,SDN 将基于继承树派生出额外的标签。

如果你想要多个标签,扩展父类,你就会得到想要的标签。

例如,如果

@NodeEntity
public class User extends Customer {

}

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

参见 Use @NodeEntity on interface/abstract class关于在 Neo4j 中使用抽象类。

关于java - 如何在 Spring Data Neo4J 3.0.0(发布版)中向节点添加第二个标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29769749/

相关文章:

java - Spring Oauth 和登录成功时安全重定向到/login

node.js - 如何使用 Neo4j 驱动程序按需中止查询

Java 整数到字节数组 Blackberry J2ME

Java,导入未解析,继承,内部类

java - 如何将javascript数组传递给Spring Data Rest

python - 如何从 py2neo 获取自动节点 ID?

docker - docker-compose不加载数据

java - Android排序数组

java - 尝试在 android 中构建一个简单的通知

java - 无法加载资源工厂类 [根异常是 java.lang.ClassNotFoundException : oracle. jdbc.pool.OracleDataSourceFactory