2011-08-05 19 views
4

我對MVC架構的工作,我有POJO對象,我想改變主鍵請你能幫助我 主鍵爲varchar 例:如何更新在Java中的主鍵休眠

Users users=usersDao.load("mark") 
+0

請參閱:http://stackoverflow.com/questions/734461/hibernate-alter-identifier-primary-key –

+1

如果您需要更改主鍵,則數據庫設計出現問題。請告訴我,您不要使用「標記」作爲主鍵。快速回答:只需做一份記錄,將其另存爲另一個具有不同ID的記錄,刪除舊記錄。 – Rudy

+0

在漫步之後作爲後續 - 您的意思是更改主鍵列或主鍵的對象值? –

回答

12

你永遠不應該更改主鍵的值。主鍵定義對象的身份。如果主鍵已被更改,Hibernate或任何其他JPA實現無法將該對象標識爲同一對象。如果主鍵可能發生變化,您應該選擇另一個主鍵或生成代理鍵。

解決方法是

  1. 刪除現有的對象
  2. 與不同的主鍵值再次堅持的對象。
+0

+1,我同意這種方法。看來海報把一個人的名字當作主要關鍵。 – Rudy

0

儘管我知道您需要直接嘗試SQL/JDBC。然後以某種方式嘗試從hibernate內部狀態和所有緩存中使實體無效。