gpt4 book ai didi

java - 使用 H2 和 Hibernate 的 Spring JPA 无法正确自动增量

转载 作者:行者123 更新时间:2023-12-01 17:44:12 25 4
gpt4 key购买 nike

尝试在已存在行的表中插入新行会导致主键冲突,因为计数器无法正确递增。

我正在尝试使用 Spring CrudRepository 将新行插入到已经包含两行的表中。如果数据库为空,它工作正常,那么计数器将按预期工作,当从 Spring 应用程序外部修改数据库时,就会出现问题,看起来计数器丢失了。

表格

CREATE TABLE apiusers (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(250) NOT NULL,
email VARCHAR(250) NOT NULL,
apikey VARCHAR(250) NOT NULL
);

POJO:

@Entity
@Table(name = "apiusers")
@Data
public class ApiUser {

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "APIUSERS_PK_SEQ")
private Long id;

private String name;
private String email;
private String apikey;

public ApiUser() {
}

public ApiUser(String name, String email, String apikey) {
this.name = name;
this.email = email;
this.apikey = apikey;
}
}

我收到的错误是:引起原因:org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException:唯一索引或主键违规:“PUBLIC.APIUSERS(ID)上的主键[1,'test','bla@gmail.com','910e41bd-592d-4a96- a27e-cca45da762d1']"; SQL语句:

这是因为 Spring 试图插入与最后一行具有相同 ID 的行,从而导致冲突。

另外,我尝试过 @GenerateValue(strategy=GenerationType.AUTO) 但没有任何运气。

Spring 似乎没有正确地将计数器与数据库同步..

最佳答案

我通过使用 @GenerateValue(strategy=GenerationType.IDENTITY) 解决了这个问题。

关于java - 使用 H2 和 Hibernate 的 Spring JPA 无法正确自动增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57494154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com