[英]hibernate ID increment oracle
我設法通過將每個表的ID放入每個實體類,使休眠狀態將每個表的ID遞增1。
@Entity
public class TestObject implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="idgen")
@SequenceGenerator(
name="idgen",
sequenceName="testobject_seq",
allocationSize=1,
initialValue=1
)
我有兩個表,這些表通過Oracle SQL Developer手動填充數據。 創建完表格后。
<property name="hibernate.hbm2ddl.auto">create</property>
對於其中有數據的2個表,我將initialValue設置為所需的值。 例如,表testchamber具有22行數據。 所以我的注釋變為:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="idgen")
@SequenceGenerator(
name="idgen",
sequenceName="testchamber_seq",
allocationSize=1,
initialValue=23
)
但是,當我嘗試保存新的testChamber實體時,出現此錯誤。
org.hibernate.NonUniqueObjectException: A different object with the same identifier value was already associated with the session
在更改注釋之前,我可以保存我的實體而不會出現問題,但是使用舊注釋時,hibernate會隨機增加id。 例如,休眠給新實體id 60、61,而不是23、24,依此類推。
這是我的舊注釋:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
這篇文章幫助我解決了問題“ 鏈接” 。 但是@nolexa的回答是正確的,而不是來自Alex Gitelman的,實際上被檢查為正確的。 我把這個
<property name="hibernate.id.new_generator_mappings">true</property>
放入我的hibernate.cfg.xml文件中,所有創建的序列現在都可以正常工作。 非常感謝@nolexa!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.