2013-02-24 64 views
2

我使用javax.persistence進行了大量查詢。而Java迫使我要麼遭受警告,要麼@阻止他們,這兩者都不對。如何在使用JPA時消除「未檢查」警告

@SuppressWarnings("unchecked") 
@Override 
public List<Area> getArea(Province province) { 
    Query qry = em.createQuery("Select c from Area c where c.province = ?1"); 
    qry.setParameter(1, province); 
    return qry.getResultList(); 
} 

如何消除上述代碼中的警告?

回答

8

如果你使用JPA註解,使用TypedQuery代替Query

TypedQuery<Area> qry = em.createQuery(
    "Select c from Area c where c.province = ?1", Area.class); 
+0

我也建議OP使用命名參數 – gd1 2013-02-24 12:09:07

+0

如果我這樣做,我會得到'類型不匹配:無法從查詢轉換爲TypedQuery '。 em.createQuery'只會生成一個簡單的查詢。 – Johan 2013-02-24 12:13:01

+0

檢查createQuery(String,class)方法中的第二個參數。您正在傳遞該類型。 – 2013-02-24 12:14:38

1

您可以使用Criteria API來避免這種情況。查看this question瞭解如何使用它。

+0

+1,但是在這種情況下,沒有必要使用Criteria API,但OP的代碼可以移植到使用泛型並且需要較少返工的TypedQuery。 – gd1 2013-02-24 12:08:17

+0

Criteria API強制你寫查詢的複雜方式會讓我頭疼。這是對受虐狂的練習。 – Johan 2013-02-24 12:10:51

相關問題