2013-01-07 30 views
0

是否有可能使更新/刪除類型的安全操作像CriteriaQuery查詢實體?更新/刪除類型安全的方式 - 通過使用像CriteriaQuery的東西?

我在這裏的具體情況是,因爲我想在一段時間後用EclipseLink刪除一些實體集合時避免使用本機查詢。我正在與Date比較和使用Native SQL進行接近。你認爲這對我的情況會是最好的用例嗎?就我個人而言,我認爲ORM提供者應該製作SQL並避免原生SQL。

預先感謝的建議, 西麥

回答

1

標準API尚不支持批量操作,但你可以使用普通的JPQL更新和刪除查詢。提供者會將它們轉換爲SQL。在大多數情況下,您無需自己編寫原生SQL。

作爲例子 - 提高僱員工資,然後解僱他:

UPDATE Employee e 
SET e.salary = 99999 
WHERE e.salary = 88888 


DELETE FROM Employee e 
WHERE e.salary = 99999 
+0

謝謝,但因爲沒有辦法使用與JPQL以批量操作日期比較,就像在你的例子,我用母語,這就是爲什麼我想避免它。如果有可能,當然 –

+0

@SimeonAngelov - 你說的「沒有辦法」是什麼意思?您可以使用Date對象或日期文字進行操作,例如JPQL中的其他類型,批量處理或不處理。你有沒有工作的特殊情況? – kostja

+0

當我在互聯網上閱讀資源流時,JPQL沒有日期arjmentic,對嗎?我的具體情況是我想通過Query.executeUpdate()函數刪除過期時間的實體,而不是使用本機查詢或使用源代碼說: 1. String query =「DELETE FROM A WHERE lastUsedTime <=?」 2.查詢executeQuery = EM.createNativeQuery(query); 3. executeQuery.executeUpdate(); 在這裏,在第2行,我想使用例如使用JPQL或其他的createQuery(),但不使用本機查詢 –

相關問題