2011-05-23 2 views
0

J'essaie d'implémenter un namedQuery (javax.persistence.Query) avec Generics. Cela fonctionne pour des objets uniques:javax.persistence.Query avec des génériques

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; 
} 

Malheureusement, cela ne peut pas directement appliquée pour obtenir tous les objets:

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

Le étend dans la méthode Liste publique .... semble être terrible mal, mais je ne comprends pas l'image. Comment est la syntaxe pour obtenir un List<T>?

Merci, Thor

Répondre

2

Vous devez déclarer le type générique avant de l'utiliser dans List:

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

Questions connexes