本文介紹了UPDATE/DELETE查詢不能鍵入JPA的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在使用Spring框架來處理培訓項目。我也在使用JPA,并且經歷了一段時間的地獄。在我的DAO實現類中,我寫道:
@Override
public void deleteEntries(Module mod) {
System.out.println(mod.getDescription());
entityManager.createQuery("delete from TrainingEntry e where e.module = :mod and e.completedDate IS NULL",
TrainingEntry.class).setParameter("mod", mod);
}
如您所見,這只是一個簡單的DELETE語句,但我得到錯誤:
"Update/delete queries cannot be typed."
我的猜測是,我需要使用一些EntityManager
類方法來完成這項工作,但我不確定,因為網上幾乎沒有關于此錯誤的任何信息。我在應用我在網上找到的關于JPA刪除查詢的一些解決方案時也遇到了困難。對于拋出這個錯誤的原因,任何正確的方向或解釋都是非常感謝的。
推薦答案
EntityManager
方法的聲明如下:
Query createQuery(java.lang.String qlString)
<T> TypedQuery<T> createQuery(java.lang.String qlString, java.lang.Class<T> resultClass)
// The other three method is not relevant here
從這里可以清楚地看到,由于第二個參數,您得到了TypedQuery<T>
。如果刪除它,您將得到一個簡單的Query
對象。這就是你所需要的。
這篇關于UPDATE/DELETE查詢不能鍵入JPA的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,