我试图创建一个通用ID(整数,字符串,组合)嵌入到各个实体的表中(具有自己的ID)。
我创建了一个通用ID接口(GenericPJM_Id),并在我所有的实体中使用了特定的可嵌入ID对象。 我也有通用实体接口(GenericPJM),它具有ID的通用类型。
我尝试使用@OneToOne映射,然后依次使用targetEntity作为GenericID.class。这是行不通的,因为它是@Embeddable
最后,我尝试定义也不起作用的@TypeDefs。 错误:GenericPJM_Id没有持久性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 {}
每个实体都应实现通用实体,并且每个实体将具有其自己的Embeddable Id(所有仅具有一个字段的组合都可以)。所有可嵌入的ID都将实现通用ID。