【发布时间】:2013-02-02 19:23:54
【问题描述】:
我有一些实体继承了如下所示的 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);
如果 then 在其他一些 ejb 中使用
获取该实体someEntity = query.getResultList().get(0);
返回的实例将具有dtype == null 直到
em.refresh(someEntity);
我猜这是因为实体管理器返回了一个不知道在 em.persist() 上插入了哪个 dtype 的缓存实例。
但我的问题是如何让查询返回设置了 dtype 的实例?
我使用 glassfish 3.1.2.2(默认 jpa 提供程序和包含的 javadb)
【问题讨论】:
-
我在 jsf facelets 中使用它。 #{entity.dtype == 'ConcreteEntity'} 基本上我获取抽象实体的列表,然后根据类型以不同的方式显示它们。也许还有其他方法可以解决这个问题
-
是的,效果很好!
标签: jakarta-ee entity jpa-2.0 ejb-3.1