带有泛型的javax.persistence.Query
我试图用泛型实现namedQuery(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
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