【发布时间】:2016-02-27 18:34:29
【问题描述】:
MSSQL ID 跳转功能有问题。
我的要求是,我需要生成一个序列号,比如说,从 1000 开始并逐个递增,我的应用程序托管在多个服务器中并指向同一个 DB。多个主机与 Nginx 平衡。
为此,用 SequenceGenerator 写了一个实体类
@Entity
@SequenceGenerator(name = "IdSequence",
sequenceName = " ID_GEN",
allocationSize = 1)
public class Example implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = " IdSequence ")
private long id ;
}
而且效果很好。当我重新启动DB时,下一个ID跳转到current+1000
为了解决这个问题,我添加了一个休眠属性,它可以很好地防止 ID 跳跃。
<property name="hibernate.id.new_generator_mappings" value="true"/>
现在真正的问题是已经存在的具有自动生成策略的实体出现了异常
无法在表“USER”中为标识列插入显式值 IDENTITY_INSERT 设置为 OFF。
- 有什么办法可以解决 JPA/Hibernate 中的 ID 跳转问题
- 我怎样才能避免
IDENTITY_INSERT is set to OFF同样的修复。
您能否建议一个更好的选项来生成序列号 那应该是独一无二的。
提前致谢
【问题讨论】:
标签: java sql-server spring hibernate jpa