为什么JPA的EntityManager#getReference不返回@MappedSuperclass的子类?

时间:2017-03-06 20:35:54

标签: jpa eclipselink

鉴于以下设计的JPA实体继承关系:

@MappedSuperclass
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "SUB_TYPE")
abstract class SuperEntity

@Entity
@DiscriminatorValue("SUB")
class SubEntity extends SuperEntity

为什么以下方法调用没有返回类SubEntity的实例?

EntityManager em;
Long idOfSub = 42;
SuperEntity subAsSup = em.getReference(SuperEntity.class, idOfSub);

这种意外行为背后的理由是什么?什么替代代码可以按预期工作?

澄清:我实际上并不想做出(可能是硬编码的)决定,即我是否期望返回类SubEntity或其他类型的子实体的实例。我的真实场景中的客户端代码通过类SuperEntity的API进行通信,并不关心它是什么具体类型的子实体。

0 个答案:

没有答案