所以这就是我基本上想要做的事情:
@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。
我如何概括这一点?有什么方法吗?
答案 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();
}