Объединенная стратегия наследования - PullRequest
1 голос
/ 19 мая 2019

Я использую тип наследования, равный join в моем весеннем проекте. У меня был класс с именем Identifier, который имел четыре названных типа (прямой, косвенный, срочный, info). При вставке одного идентификатора с одним типом, таким как direct, иначе все в порядке. Но я хочу вставить несколько типов с одним и тем же идентификатором Id, что недопустимо, поскольку идентификатор является первичным ключом, который нельзя дублировать. Как я могу достичь этого предложения ???

Возможно, другая стратегия наследования могла бы достичь запрошенной цели.

@Table(name = "identifier")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "TYPE_IDEN", discriminatorType = DiscriminatorType.STRING, length = 2)

На самом деле, я заблокирован, если есть что сделать.

1 Ответ

0 голосов
/ 20 мая 2019

Вы смоделировали свою проблему с помощью решения наследования.У тебя один супер класс с четырьмя детьми.Задайте себе вопрос: возможно ли, чтобы любой подкласс в java имел более одного типа одновременно?Учитывая то, что написано в вопросе, это то, что вы пытаетесь сделать, и это невозможно.

Если вы хотите, чтобы ваш класс обладал более чем одним набором характеристик, вам придется Пересмотрите способ моделирования вашей проблемы.

Если вам нужен «Идентификатор» для хранения любого количества «типов», возможно, вам следует использовать композицию, поэтому вместо «Идентификатора» будучи «прямым» или «косвенным», оно будет содержать «прямым» и / или «косвенным».

Это толькоПредполагается, что существует несколько решений, и я не знаю всех ваших потребностей, но имейте в виду, что ваше текущее моделирование не позволит вам вести себя так, как вы описали.

...