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