【问题标题】:How do I add a second label to a node in Spring Data Neo4J 3.0.0 (Release)?如何在 Spring Data Neo4J 3.0.0 (Release) 中向节点添加第二个标签?
【发布时间】:2015-04-21 10:34:43
【问题描述】:

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

【问题讨论】:

  • 还有一个问题尚未解决。 See

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


【解决方案1】:

如果您重塑域对象以支持继承,SDN 将根据继承树派生额外的标签。

如果您需要多个标签,请扩展父类,您将获得所需的标签。

例如,如果

@NodeEntity
public class User extends Customer {

}

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

请参阅Use @NodeEntity on interface/abstract class,了解在 Neo4j 中使用抽象类。

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多