簡體   English   中英

休眠ID增量oracle

[英]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)
  • 有沒有一種正確的方法來告訴休眠表中已經有數據,並且它應該從一個特定的數字開始計數?
  • 或如何擺脫“ NonUniqueObjectException”。

這篇文章幫助我解決了問題“ 鏈接” 但是@nolexa的回答是正確的,而不是來自Alex Gitelman的,實際上被檢查為正確的。 我把這個

<property name="hibernate.id.new_generator_mappings">true</property>

放入我的hibernate.cfg.xml文件中,所有創建的序列現在都可以正常工作。 非常感謝@nolexa!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM