如何在JPA中定义通用可嵌入ID?

时间:2019-04-20 16:49:20

标签: hibernate jpa spring-data-jpa

我试图创建一个通用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。

0 个答案:

没有答案