JPA:有没有办法为Embeddable实现继承

JPA: Is there some way to implement inheritance for Embeddable

示例代码如下:

class Resource {
  Long id;
  @Embedded
  GPU gpu;
  CPU cpu;
}

abstract class GPU {
  String name;
  GpuType type;
}

class PhysicalGPU extends GPU {
}

class VirtualGPU extends GPU {
  private int partition;
}

我有一个实体 Resource,它有一个字段 GPU,它是一个超级 class。它可以是 VirtualGPUPhysicalGPU。但是 JPA 或 Hibernate 似乎不支持 @Embedded 字段的 class 继承。并且创建没有继承的单个GPU类型或者创建PhysicalGPUResourceVirtualGPUResource来实现单个字段的继承是很难看的。

我认为作为 Resource 的描述符,使 GPU 成为单独 table 中的关联(并在 [= 中给出 ManyToOne 关系11=]) 也不是一个好的做法,但这将使继承可用。

我做了一些搜索,我想现在答案是否定的。但我仍然认为这对 Hibernate ORM 是一个相当大的要求,它可以在像 MyBatis 这样的框架中实现,Hibernate 不支持这种行为是很奇怪的。那么也许还有其他方法可以做到这一点?

我认为目前最好的方法是使用UserType。关注文章 Custom Types in Hibernate and the @Type Annotation 会很有帮助。

但是我还是不知道CompositeUserType有什么好处。