我有一些实体继承了如下所示的 AbstractEntity。
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class AbstractEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int id;
@Column(insertable = false, updatable = false)
private String dtype;
public String getDtype() {
return dtype;
}
}
然后我坚持一些扩展 AbstractEntity 的实体。
ConcreteEntity concreteEntity = new ConcreteEntity();
em.persist(concreteEntity);
如果然后在其他一些 ejb 中使用
someEntity = query.getResultList().get(0);
返回的实例将有dtype == null
直到
em.refresh(someEntity);
我猜这是因为实体管理器返回一个不知道在 em.persist() 上插入了哪个 dtype 的缓存实例。
但我的问题是如何让查询返回设置 dtype 的实例?
我使用 glassfish 3.1.2.2(默认 jpa 提供程序和包含的 javadb)