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_IN, WRITER_IN и так далее. Как добиться этого с SDN, не вводя отдельного RelationshipEntity занятия для этого?

Одним из возможных решений является определение типа задания как свойства RelationshipEntity, но я не уверен, что это хорошая идея, потому что у меня ~30 миллионов сущностей, а AFAIK Neo4j не поддерживает индексы для RelationshipEntity свойства... Пожалуйста, сообщите.

1 ответ

Решение

Как насчет использования абстрактного класса с общими основами и наследования каждой необходимой роли от него?

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

  @Property  
  private String title;

  [...]
}

а также

@RelationshipEntity(type = "PLAYED_IN")
public class Role extends BaseRelationship {
  [...]
}
Другие вопросы по тегам