如何在JPA中使用继承来返回类?

时间:2013-06-29 19:00:50

标签: java inheritance jpa

所以这就是我基本上想要做的事情:

@Stateless
public abstract class GeneralDao<T> {

    @PersistenceContext(unitName = "Persistence")
    EntityManager em;

    private List<T> allT;

    public List<T> getAllT(){

        TypedQuery<T> typedQuery = em.createQuery("Select t from T t",T.class);

    }

}

所以例如我想扩展这个类,比如说像这样的EmployeeDao:

 public class EmployeeDao extends GeneralDao<Employee>{

 }

当我跑步时:

employeeDao.getAllT()

我想获得一份清单。这不起作用,因为我猜Java不喜欢getAllT方法中的T.class。

我如何概括这一点?有什么方法吗?

1 个答案:

答案 0 :(得分:1)

只需允许子类返回特定的类类型,如下所示:

public abstract class GeneralDao<T> {

    @PersistenceContext(unitName = "Persistence")
    EntityManager em;

    private List<T> allT;

    public List<T> getAllT(){

        TypedQuery<T> typedQuery = em.createQuery("Select t from " + getClassType().getSimpleName() + " t", getClassType());

    }

    protected abstract Class<T> getClassType();
}