7
如果用戶按下「搜索」按鈕,然後他們決定做「其他」,我們必須取消已經運行的查詢。我如何取消休眠查詢
我們使用Hibernate(和Oracle)作爲持久性解決方案。休眠會話界面提供了一個cancelQuery()
方法。經過一番測試,似乎cancelQuery()
沒有效果。
有沒有人有這種Session#cancelQuery()
方法的一些經驗?
謝謝!
如果用戶按下「搜索」按鈕,然後他們決定做「其他」,我們必須取消已經運行的查詢。我如何取消休眠查詢
我們使用Hibernate(和Oracle)作爲持久性解決方案。休眠會話界面提供了一個cancelQuery()
方法。經過一番測試,似乎cancelQuery()
沒有效果。
有沒有人有這種Session#cancelQuery()
方法的一些經驗?
謝謝!
它有一個效果,但使用Oracle JDBC驅動程序,它只需要一些時間發生。等一兩分鐘。
如果你不能等待,那麼在後臺線程(連同會話)中移動cancel,並在你的主線程中請求一個新的Hibernate會話。您不能使用舊會話,直到cancelQuery()
返回。
我發現cancelQuery方法只適用於應用程序正在等待數據庫開始返回結果。但是,一旦Hibernate從數據庫接收到結果集並開始將結果映射到對象,那麼它已經不起作用,並且這實際上是大部分性能開銷的地方。請參閱:http://stackoverflow.com/questions/28391785/outofmemoryerror-as-a-result-of-multiple-searches – Jewels 2015-02-12 12:10:49