2011-05-23 29 views
0

我试图用泛型实现namedQuery(javax.persistence.Query)。这是工作的单个对象:javax.persistence.Query与泛型

public <T extends Status> T fStatusByCode(Class<T> type, String code) 
{ 
    Query nq = getManager().createNamedQuery("f"+type.newInstance().getClass().getSimpleName()); 
    nq.setParameter("code", code); 
    T result=(T)nq.getSingleResult(); 
    return result; 
} 

可惜这不能直接应用于得到的所有对象:

public List<T extends UtilsStatus> allStatus(Class<T> type) 
    { 
     ... 
     List<T> lResult = (List<T>)q.getResultList(); 
     return lResult; 
    } 

扩展的方法公开名单 ....似乎是可怕的错误,但我不明白。语法如何得到List<T>

谢谢雷神

回答

2

你有你的List使用它之前声明的泛型类型:

public <T extends UtilsStatus> List<T> allStatus(Class<T> type)