gpt4 book ai didi

java - Spring Data PostgreSQL Key already exists 错误

转载 作者:行者123 更新时间:2023-11-29 12:43:50 25 4
gpt4 key购买 nike

我有以下 PostgreSQL 表:

CREATE TABLE IF NOT EXISTS levels (
id SERIAL PRIMARY KEY,
name VARCHAR(256),
created_date timestamp,
updated_date timestamp
);

和相应的 Spring Data 实体:

@Entity
@Table(name = "levels")
public class Level extends BaseEntity implements Serializable {

private static final long serialVersionUID = 642499791438799548L;

@Id
@SequenceGenerator(name = "levels_id_seq", sequenceName = "levels_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "levels_id_seq")
private Integer id;

private String name;

...
}

@MappedSuperclass
public abstract class BaseEntity {

@Column(name = "created_date")
private Date createdDate;

@Column(name = "updated_date")
private Date updatedDate;

@PrePersist
void onCreate() {
setCreatedDate(new Date());
}

@PreUpdate
void onPersist() {
setUpdatedDate(new Date());
}

...
}

这是我的 Spring 数据级别存储库:

@Repository
public interface LevelRepository extends JpaRepository<Level, Integer> {

Level findByName(String name);

}

现在,当我尝试使用 Spring LevelRepository 保存新的 Level 实体时,我收到以下错误:

ERROR:  duplicate key violates unique constraint « levels_pkey »
DETAIL: Key "(id)=(5)" already exists.

我的配置有什么问题?

最佳答案

如果您想保留GenerationType 而不是使用GenerationType.AUTO from that answer

并且错误的发生可能是由于在 data.sql 文件中进行了硬编码插入。

在实体中使用定义的顺序插入

INSERT INTO levels(id, name) VALUES (nextval('levels_id_seq'), 'test');

GenerationType.IDENTITY 相同,它将创建序列“%Your-table-name%_id_seq”。

关于java - Spring Data PostgreSQL Key already exists 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35871449/

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