本文介紹了使用Hibernate限制刪除查詢的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我想創建一個新功能,以編程方式從表中刪除行,并限制行數。這可能是數千個要刪除的元素。使用的數據庫為Oracle。
主要問題是HQL不支持limit
或rownum
fordeletes
之類的內容。我們只有select
的setMaxResults
。
我考慮的解決方案是:
-
使用
select
,然后循環列表,使用delete
刪除列表中的每個元素。使用
session.createSQLQuery
以便能夠在查詢中使用limit
。
第1點:我想避免這種情況,因為我不喜歡在事后將元素帶到內存中刪除,因為元素可以是任何數字(例如1000000),我對元素的數量沒有限制。我是否遺漏了什么,我可以幫助我解決此問題?
第二點:我不知道session.createSQLQuery
和session.createQuery
有什么性能差異,使用session.createSQLQuery
有什么不便嗎?
推薦答案
其他選項
您可以嘗試迭代/加載每個對象并將其刪除。(看起來很丑!)
或
您可以編寫兩個單獨的HQL查詢,其中第一個查詢的結果被提供給另一個查詢(執行實際的刪除)。
這篇關于使用Hibernate限制刪除查詢的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,