0

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

@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 ..

我如何概括这一点?无论如何?

4

1 回答 1

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();
}
于 2013-06-29T19:09:36.287 回答