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 ... Пожалуйста, сообщите.

Я предполагаю, что название имеет другое значение, чем название фильма, или? Поскольку с учетом приведенного выше класса возможны простые отношения, если вам не нужен заголовок собственности. Если это невозможно, ответ ThirstForKnowledge - лучшее, что вы можете сделать в этой ситуации.

meistermeier 29.11.2018 14:45

Это всего лишь образец класса, скопированный из официальной документации SDN. Кроме того, я думаю о введении промежуточного узла вместо отношения

alexanoid 29.11.2018 14:48

Может, это больше подходит для вашей проблемы. Каждый RelationshipEntity рассматривается Neo4j-OGM как нечто «фиксированное» (без наследования бизнес-логики, изменения типов и т. д.)

meistermeier 29.11.2018 14:54
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

  @Property  
  private String title;

  [...]
}

и

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

По-прежнему потребуется определять отдельный класс для каждого типа отношений, но я предпочитаю избегать этого.

alexanoid 29.11.2018 12:29

Другие вопросы по теме