2016-02-04 50 views
3

如何限制在hql中更新的行數。我知道Query#setMaxResults()可用於限制select子句中的記錄,但它不適用於更新查詢。Hql如何修改表的限制?

+0

也許你可能想使用'LIMIT'。 – Helios

+0

@尼克,我已經嘗試過限制條款,但hibernate並沒有考慮更新查詢。 –

回答

0

我已經使用命名的sql查詢來做同樣的事情。由於hibernate在更新查詢中不支持限制子句。

3

我不知道任何限制用SQL或任何其他查詢語言更新的記錄數的功能。你通常所做的是對更新內容進行更具體的查詢。 由於您無法爲更新查詢指定任何順序,因此您將決定更新哪些記錄的標準是什麼?就更新內容而言,更新完全沒有定義。
還是要限制更新後返回的記錄數?

+0

在Mysql中,可以限制使用限制影響的記錄數。如果我使用限制= 2,那麼只有兩個記錄會受到影響。 –

+0

好吧,所以mysql支持這一點,但由於這不是SQL的一般特性,所以hibernate可能不會支持它。你有沒有試圖使用這樣的查詢http://stackoverflow.com/a/12620023/1377224,指定什麼用IN子句更新? – philnate

+0

更新表格時,我們無法在where clasue(至少在mysql中)的子查詢中指定相同的表格。 '更新WALLET_HISTORY設置IS_CREDITED = 1其中ID =(從WALLET_HISTORY限制1中選擇ID)'拋出異常,'由java.sql.SQLException引發:您無法指定目標表'WALLET_HISTORY'以更新FROM子句' –