Как определить универсальный встраиваемый идентификатор в JPA? - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь создать общий идентификатор (целые числа, строки, композиты) для встраивания в таблицы соответствующих объектов (имеющих свой собственный идентификатор).

Я создал интерфейс универсального идентификатора (GenericPJM_Id) и использую специальные встраиваемые объекты идентификаторов во всех моих объектах. У меня также есть интерфейс Generic Entity (GenericPJM), который имеет универсальный тип для ID.

Я попытался использовать сопоставление @OneToOne, а затем, в свою очередь, использовать targetEntity в качестве GenericID.class. Это не работает, так как @ Embeddable

Наконец, я попытался определить @TypeDefs, который также не работает. Ошибка: GenericPJM_Id не имеет свойства постоянного идентификатора: GenericPJM.id

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@TypeDef(
        name = "GenericPJM_Id",
        defaultForType = GenericPJM_Id.class,
        typeClass = GenericPJM_Id.class
)
public interface GenericPJM<T extends GenericPJM_Id> {
  @EmbeddedId
  @Type(type="GenericPJM_Id")
  T getId();

  void setId(T id);
}

@Embeddable
public interface GenericPJM_Id extends Serializable {}

Предполагается, что каждая сущность реализует универсальную сущность, и у каждой сущности будет свой собственный встраиваемый идентификатор (все композиции с одним полем подходят). Все встраиваемые идентификаторы будут реализовывать общий идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...