我在 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;
添加回答
舉報
0/150
提交
取消