如何在没有警告的情况下从休眠中获取结果元素



在休眠中,我总是进行查询,并从中获取记录,如下所示:

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 方法,但 查询版本返回原始类型(非泛型(的结果列表 而不是参数化(泛型(类型

最新更新