2011-05-23 24 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)