【发布时间】:2022-01-13 10:16:55
【问题描述】:
目前我正在将一列数据迁移到新表中,并创建了一个序列来生成这样的主键
CREATE SEQUENCE seq_my_generated
MINVALUE 1
MAXVALUE 99999999
START WITH 1
INCREMENT BY 1
我使用以下脚本迁移数据
INSERT INTO my_new_table( new_table_pk, old_table_pk_as_fk, attachment) SELECT seq_my_generated.nextval, old_table_pk, attachment FROM old_table
到那时一切正常,现在在实际环境中,新数据将通过我的 java 应用程序插入到新表中,我的新表的 Java 代码如下所示
@Entity
@Table(name="my_new_table")
public class NewTable{
@Id
@GeneratedValue(strategy = SEQUENCE, generator ="seq_my_generated")
@SequenceGenerator(name="seq_my_generated")
@Column(name="new_table_pk")
long id;
//rest parameters
}
现在,当我尝试通过应用程序插入新数据时,主键唯一性违规异常, 我的假设是,当我使用 db 脚本迁移数据时,我的 java 代码不知道使用的最后一个值是什么,因此它尝试重用表中已经存在的相同键 谁能告诉我我的假设是否正确或可能是什么问题?
【问题讨论】:
标签: oracle spring-data-jpa spring-data oracle-sqldeveloper