2012-08-14 39 views
0

我的使用案例:休眠:將還原已刪除的行具有相同的ID

  1. 使用自動遞增發生器插入,我不想改變它在我的Hibernate配置。
  2. 用戶刪除了ID爲10的對象,並將此刪除的對象保存到某處。
  3. 稍後,用戶決定使用相同的ID恢復這個被刪除的對象:10。
  4. 因爲這個ID爲10的對象已經從數據庫中刪除了,我怎樣才能使用Hibernate將它插回到數據庫,而使用自動增量生成器的hibernate配置(記住:我需要在數據庫中保留這個對象的相同ID )?

感謝,

亞歷

+0

可能重複http://stackoverflow.com/questions/3194721/bypass-generatedvalue-in-hibernate-merge-data-not-in-db? – poison 2012-08-14 15:59:03

+0

我知道這不是你問的,你可能有一個很好的理由需要THAT主鍵值,但是:不要設計你的代碼,這樣你就可以依賴數據庫中具有給定主鍵值的對象/行。 (靜態標識表除外。)在上述情況下,如果可能的話,我會嘗試設計代碼,以便用新密鑰重新創建對象,並且「用戶」獲取新密鑰。 – Marvo 2012-08-14 16:07:43

回答

1

我懷疑Hibernate將讓你這麼做,如果你不改變發電機。那麼插入它,然後用直接SQL更新它並使任何Hibernate緩存失效呢?

+0

似乎沒有Hibernate的方式來做到這一點(不是直接的sql方式)。無論如何感謝您的幫助。 – curiousman 2013-01-03 15:16:13

0

我懷疑Hibernate不會允許你這樣做。但是你可以去編寫sql查詢來更新表格[如果你已經使用了表生成器]來改變當前可以使用的索引位置,但是它會讓你感到複雜的邏輯,因爲你總是必須跟蹤哪些索引記錄不是目前