带有泛型的javax.persistence.Query

带有泛型的javax.persistence.Query,java,generics,Java,Generics,我试图用泛型实现namedQuery(javax.persistence.Query)。这适用于单个对象: public <T extends Status> T fStatusByCode(Class<T> type, String code) { Query nq = getManager().createNamedQuery("f"+type.newInstance().getClass().getSimpleName()); nq.setParam

我试图用泛型实现namedQuery(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 T fStatusByCode(类类型,字符串代码)
{
Query nq=getManager().createNamedQuery(“f”+type.newInstance().getClass().getSimpleName());
nq.设置参数(“代码”,代码);
T result=(T)nq.getSingleResult();
返回结果;
}
不幸的是,这不能直接应用于获取所有对象:

   public List<T extends UtilsStatus> allStatus(Class<T> type)
    {
        ...
        List<T> lResult = (List<T>)q.getResultList();
        return lResult;
    }
公共列表所有状态(类类型)
{
...
List lResult=(List)q.getResultList();
返回lResult;
}
方法公共列表中的扩展…似乎大错特错,但我不明白。如何获取
列表的语法

谢谢你,Thor使用JPA2及其方法。 它返回一个您应该使用的值。

使用JPA2及其方法。
它返回一个您应该使用的类型。

您必须先声明泛型类型,然后才能在
列表中使用它:


公共列表所有状态(类类型)

列表中使用泛型类型之前,必须先声明泛型类型:


public List allStatus(类类型)

感谢您的建议,现在我使用的是CriteriaQuery谢谢您的建议,现在我使用的是CriteriaQuery