亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 API POST 插入時出現重復鍵錯誤

通過 API POST 插入時出現重復鍵錯誤

瀟湘沐 2023-02-23 15:39:19
我在 PostgreSQL 上有一個 BD,我有很多表,但我的問題是表 Usuario。我用這個腳本創建表:CREATE SEQUENCE usuario_id_seq;CREATE TABLE public.usuario(   id               BIGINT NOT NULL DEFAULT nextval ('usuario_id_seq'::regclass),   administrador    BOOLEAN NULL,   password         CHARACTER VARYING (20) NOT NULL,   username         CHARACTER VARYING (40) NOT NULL,   CONSTRAINT usuario_pkey PRIMARY KEY (id)      OT DEFERRABLE INITIALLY IMMEDIATE,   CONSTRAINT uk_863n1y3x0jalatoir4325ehal UNIQUE (username)      NOT DEFERRABLE INITIALLY IMMEDIATE);我插入一個用戶:Insert into usuario (username, password, administrador) values ('prueba', '1234', false);這沒問題,現在我在 Spring-boot 上有這個:@Entity@Table(name = "usuario")public class Usuario implements Serializable {    @Id    @GeneratedValue    private Long id;    @NotNull    @Size(max = 40)    @Column(name = "username", unique = true)    private String username;    @NotNull    @Size(max = 20)    @Column(name = "password")    private String password;    @Column(name = "administrador")    private boolean administrador;    @ManyToMany(cascade = {            CascadeType.ALL    })    @JoinTable(name = "usuario_alerta",    joinColumns = {@JoinColumn(name = "id_usuario", referencedColumnName = "id")},    inverseJoinColumns = {@JoinColumn(name = "id_alerta", referencedColumnName = "id")})    private Set<Alerta> alertasUsuario;    @ManyToMany(cascade = {            CascadeType.ALL    })    @JoinTable(name = "usuario_producto",    joinColumns = {@JoinColumn(name = "id_usuario", referencedColumnName = "id")},    inverseJoinColumns = {@JoinColumn(name = "id_producto", referencedColumnName = "id")})    private Set<Producto> productosUsuario;    // Hibernate requires a no-arg constructor    public Usuario() {    }我收到錯誤:Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "usuario_pkey" Detail: Key (id)=(1) already exists.這是因為我在初始化腳本中創建了 id=1 的用戶。在使用 Spring-boot 之后,我可以使用 SQL 將誰插入到表中而不會出現此錯誤?
查看完整描述

1 回答

?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

好的,我看到它@GeneratedValue有一個屬性generator,所以我只是嘗試添加我之前創建的序列生成器并且它可以工作。所以,解決方案是這樣的:


@Id

@GeneratedValue(strategy = GenerationType.IDENTITY, generator="usuario_id_seq")

private Long id;


查看完整回答
反對 回復 2023-02-23
  • 1 回答
  • 0 關注
  • 111 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號