2014-01-09 62 views
1

我正在嘗試更改持久對象的ID。我正在使用JPA與Hibernate和MySQL。 執行我的代碼時出現的錯誤是:org.hibernate.HibernateException:com.tutorial.jpa.certification.listing5_18.AA實例的標識符從2更改爲99JPA Hibernate - 更改持久對象的主鍵

我無法找到答案對這個問題,所以我會感激你的幫助更換預定的代碼是:

+1

也許你應該看看這個 http://stackoverflow.com/questions/734461/hibernate-alter-identifier-primary-key –

+0

爲什麼要改變對象的主鍵?另外,如果你確實改變了對象的主鍵,那麼它將如何保證它是唯一的? – Hrishikesh

回答

3

你不應該修改的主鍵的實體 - 這個定義識別物體的,它是沒有意義的改變它。

如果您確實需要這樣做 - 您最好刪除該實體並創建一個只複製舊實體但使用新主鍵的實體。這樣,如果你有任何約束 - 例如指向舊標識符的外鍵 - 你就會知道它。

還可以查看"Identity and Sequencing" section here

希望這會有所幫助。

+0

您是對的 - 修改實體的PK並不是更好。但是有可能在使用Hibernate的JPA中執行此操作嗎? (不刪除並創建新實體) –

+2

在Hibernate中不可行否 - 您必須在原始SQL中執行此操作。 – Eugen

+0

感謝您的反饋。 –