首页 > 解决方案 > SDN参数化RelationshipEntity类型

问题描述

为了创建RelationshipEntity,我必须使用以下构造:

@RelationshipEntity(type = "PLAYED_IN")
public class Role {
    @Id @GeneratedValue   private Long relationshipId;
    @Property  private String title;
    @StartNode private Actor actor;
    @EndNode   private Movie movie;
}

我有一个问题 - 是否可以参数化RelationshipEntity类型?现在在上面的示例中,我们有硬编码PLAYED_IN类型,但我需要使用许多其他类型,例如DIRECTOR_INWRITER_IN等等。如何在不RelationshipEntity 为此目的引入单独的类的情况下通过 SDN 实现它?

一种可能的解决方案是将作业类型定义为 RelationshipEntity 属性,但我不确定这是一个好主意,因为我有大约 3000 万个实体并且 AFAIK Neo4j 不支持RelationshipEntity属性索引...请告知。

标签: neo4jspring-data-neo4jneo4j-ogm

解决方案


依靠具有共同基础的抽象类并从中继承每个必要的角色怎么样?

abstract class BaseRelationship {
  @Id
  @GeneratedValue
  private Long relationshipId;

  @Property  
  private String title;

  [...]
}

@RelationshipEntity(type = "PLAYED_IN")
public class Role extends BaseRelationship {
  [...]
}

推荐阅读