在休眠中,我总是进行查询,并从中获取记录,如下所示:
Query q = em.createQuery("FROM Product WHERE productCode=:productCode");
q.setParameter("productCode", productCode);
if(q.getResultList().isEmpty()) {
return null;
}
Iterator i = q.getResultList().iterator();
Product pp = null;
if(i.hasNext()) {
pp = (Product)i.next();
}
但是每次我使用迭代器时,我都有这个警告
迭代器是一种原始类型。对泛型类型迭代器的引用应参数化
所以我尝试使用 Iterator< Product> getElement = q.getResultList().iterator();
但在那之后我有这个新的警告:
类型安全:迭代器类型的表达式需要未经检查的转换以符合迭代器
但在那之后我改变了"(Iterator< Product >)q.getResultList().iterator();"
有一个新的警告:
类型安全:从迭代器到迭代器的未检查转换
所以我认为我做错了什么,但是呢?有什么建议吗?
尝试:
TypedQuery<Product> q = em.createQuery("FROM Product WHERE productCode=:productCode", Product.class);
q.setParameter("productCode", productCode);
if(q.getResultList().isEmpty()) {
return null;
}
List<Product> results = q.getResultList();
Iterator<Product> i = results.iterator();
Product pp = null;
if(i.hasNext()) {
pp = i.next();
}
编辑:我使用了这个来源 http://www.objectdb.com/java/jpa/query/execute非常重要:
Query和 TypedQuery 都定义了 getResultList 方法,但 查询版本返回原始类型(非泛型(的结果列表 而不是参数化(泛型(类型