[英]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.