Я пытаюсь создать общий идентификатор (целые числа, строки, композиты) для встраивания в таблицы соответствующих объектов (имеющих свой собственный идентификатор).
Я создал интерфейс универсального идентификатора (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 {}
Предполагается, что каждая сущность реализует универсальную сущность, и у каждой сущности будет свой собственный встраиваемый идентификатор (все композиции с одним полем подходят). Все встраиваемые идентификаторы будут реализовывать общий идентификатор.