Java ORA-00001:违反了唯一约束

Java ORA-00001:违反了唯一约束,java,sql,jpa,Java,Sql,Jpa,我知道,有很多文章都是关于同一个问题的,但是我仍然不明白为什么我的代码会抛出上面提到的异常 我正在使用JPA进行数据库连接 我拥有以下实体: /** * Primary key. */ @Id @Column(name = "ID") @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_REGISTRATION") @SequenceGenerator(name = "SEQ_REGISTRATION",

我知道,有很多文章都是关于同一个问题的,但是我仍然不明白为什么我的代码会抛出上面提到的异常

我正在使用JPA进行数据库连接

我拥有以下实体:

 /**
 * Primary key.
 */
@Id
@Column(name = "ID")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_REGISTRATION")
@SequenceGenerator(name = "SEQ_REGISTRATION", sequenceName = "SEQ_REGISTRATION")
private Long id;
据我所知,在序列生成器的情况下,默认值是50

我创建DB表序列,如下所示:

--------------------------------------------------------
sequence for table REGISTRATION
--------------------------------------------------------
CREATE SEQUENCE "SEQ_REGISTRATION" MINVALUE 1 MAXVALUE 
9999999999999999999999999999 INCREMENT BY 50 START WITH 1 CACHE 20 NOORDER 
NOCYCLE;
我还尝试将递增Y_的值设置得更大,但没有帮助

你知道为什么我总是得到违禁品例外吗


提前谢谢你

违反唯一约束意味着数据库中已有记录,并且序列配置为生成已使用的数字,因为它从1开始计数


您需要将“开始时间”调整为至少比您当前在数据库中的最大值高一个。

违反唯一约束意味着您在数据库中已有记录,并且序列配置为生成已使用的数字,因为它从1开始计数


您需要将“start with”调整为至少比当前数据库中的最大值高一个。

为什么要增加50,听起来很奇怪,序列的默认值和最符合逻辑的值是1。正如Joakim已经提到的,尤其是在使用SequenceGenerator时,您应该始终使用allocationSize=1。对于大多数底层数据库,序列总是递增1。别忘了更改数据库中的序列。为什么要增加50,听起来很奇怪,序列的默认值和最符合逻辑的值是1。正如Joakim已经提到的,尤其是在使用SequenceGenerator时,您应该始终使用allocationSize=1。对于大多数底层数据库,序列总是递增1。别忘了更改数据库中的顺序。