本文介紹了UPDATE/DELETE查詢不能鍵入JPA的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我正在使用Spring框架來處理培訓(xùn)項目。我也在使用JPA,并且經(jīng)歷了一段時間的地獄。在我的DAO實現(xiàn)類中,我寫道:
@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
類方法來完成這項工作,但我不確定,因為網(wǎng)上幾乎沒有關(guān)于此錯誤的任何信息。我在應(yīng)用我在網(wǎng)上找到的關(guān)于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
從這里可以清楚地看到,由于第二個參數(shù),您得到了TypedQuery<T>
。如果刪除它,您將得到一個簡單的Query
對象。這就是你所需要的。
這篇關(guān)于UPDATE/DELETE查詢不能鍵入JPA的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,