2017-02-02 113 views
0

我在Hibernate中很新。我正在使用Hibernate和JPA。我有一個帶註釋的實體類和一個與該實體類相關的表。在休眠狀態下刪除重複鍵'59''PRIMARY in Hibernate

@Entity 
public class Test implements Serializable { 
    @Id 
    @GenericGenerator(name="inc" , strategy="identity") 
    @GeneratedValue(generator="inc") 
    private int id; 

    private String address; // setter getter and constructor 
} 

保存此實體時,它將數據插入到數據庫中。但在應用程序運行過程中,另一個應用程序正在將數據插入到同一個表中當我的應用程序嘗試保存數據時,重複條目'59'生成關鍵'PRIMARY'異常。所以我想使用一個生成器,它可以在數據庫級別插入數據並生成id,而不是應用程序級別,標識符必須保存回我的實體。

回答

0

使用表生成器策略或序列生成器。

+0

我同意你的看法。但是我需要一個可以在插入實體前每次獲取最大值(id)的生成器。 Bcz可能是,有人手動將數據插入表中。那時表生成器也失敗了。請引導我。 –

+0

如果有人直接更新表格,那麼在這裏您需要手動關注ID,即在插入記錄之前獲取最大ID並對其進行+1操作並保留。 –

0

您不必指定生成器。您可以使用默認生成器,並且從不手動設置標識。如果錯誤仍然出現在合併/保留方法之後。

更多關於發電機的信息,你可以在這裏發現https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing

@Entity 
public class Test implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private int id; 

    private String address; // setter getter and constructor 
}