[英]Hibernate Save method with SQL Server Identity column
我們正在使用Hibernate Save方法在具有標識列的SQL Server表中插入數據。
@GeneratedValue(strategy=GenerationType.AUTO)
使用了注釋,並且我們能夠插入數據,並且標識列也逐漸增加。
問題是:如果由於某種原因在表中插入失敗,則標識列的值也會增加。 因此,下一次成功插入的值為+2。 例如,第一次成功插入會導致Identity列值為1。
第二次插入失敗。
第三次成功插入導致標識列的值為3而不是2。
這似乎是一個常見問題,因為Hibernate save方法會立即返回生成的ID。 請提出一個最佳的替代解決方案,以使標識列值不會因失敗而增加。
據我所知,解決此問題的唯一方法是您必須通過應用程序顯式地為對象分配ID,而不是讓休眠或數據庫為您生成ID。
為此,
@GeneratedValue
注釋,而僅使用@Id
。 assign
為生成器類,例如<generator class="assigned">
。 現在:
int
或long
而不是serial
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.