如何解决如何使JPA序列同时使用同一DB与外部系统同步生成序列ID
我正在使用一个序列,该序列在将记录插入数据库表时基本上生成id b / w 1000至9999。现在有一个外部遗留系统(GUI)通过手动将id b / w 1000提到9999来创建该记录。在部署我的应用程序之前,已经有一些记录如下表:
我已在我的实体中应用了该序列,如下所示:
@Id
@GenericGenerator(
name = "empid-sequence-generator",strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",parameters = {
@Parameter(name = "sequence_name",value = "user_sequence"),@Parameter(name = "initial_value",value = "1000"),@Parameter(name = "increment_size",value = "1")
}
)
@GeneratedValue(generator = "empid-sequence-generator")
@Column(name = "EMP_ID",nullable = false)
public short getEmp_id() {
return emp_id;
}
在当前的序列实现中,由于主键冲突,我正在获取SqlServerException,已经通过外部系统GUI插入了范围(1000-9999)中的某些ID。
我该如何实现当前序列,以便对于第一个插入记录,将插入ID为1000的记录,因为它未被占用,但是对于下一个插入记录,将存储ID为1002的记录,因为数据库中已经存在1001。
谢谢
解决方法
由于id生成器不能满足您的要求,因此您必须实现一个返回最低可用ID的函数,并在每次您要执行插入操作以获取该ID并将其手动设置为实体时调用它
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。