gpt4 book ai didi

java.sql.SQLIntegrityConstraintViolationException : Duplicate entry '0' for key 'PRIMARY'

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

在 Swagger 中测试我的应用程序并尝试将一个条目发布到 MySQL 数据库时,我不断收到一条错误消息:java.sql.SQLIntegrityConstraintViolationException:键“PRIMARY”的重复条目“0”。检查堆栈跟踪时,我可以在应用程序抛出错误消息之前看到以下几行:

2017-09-12 12:55:11.394  INFO 642 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 28 ms
Hibernate: insert into addresses (house_number, street_name, town_name, zip_code, address_id) values (?, ?, ?, ?, ?)
2017-09-12 12:55:16.562 WARN 642 --- [nio-8080-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1062, SQLState: 23000
2017-09-12 12:55:16.562 ERROR 642 --- [nio-8080-exec-4] o.h.engine.jdbc.spi.SqlExceptionHelper : Duplicate entry '0' for key 'PRIMARY'
2017-09-12 12:55:16.563 INFO 642 --- [nio-8080-exec-4] o.h.e.j.b.internal.AbstractBatchImpl : HHH000010: On release of batch it still contained JDBC statements

我的条目映射似乎有问题。我的条目Counterparty包含一个条目地址(一对一关系)

@Entity
@Table(name = "counterparties")
public class Counterparty implements Serializable {

@Id
@Column(name = "counterparty_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private int nip;
private String companyName;
private String phoneNumber;
private String bankName;
private String bankNumber;
@OneToOne(cascade = {CascadeType.PERSIST,
CascadeType.MERGE,
CascadeType.DETACH, CascadeType.REFRESH})
@JoinColumn(name = "address_id", referencedColumnName="address_id")
private Address address;
@OneToMany(mappedBy = "counterparty", fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST,
CascadeType.MERGE,
CascadeType.DETACH, CascadeType.REFRESH})
@JsonIgnore
private List<Invoice> invoices;


@Entity
@Table(name = "addresses")
public class Address implements Serializable {

@Id
@Column(name = "address_id")
private int id;
private String zipCode;
private String townName;
private String streetName;
private String houseNumber;

@OneToOne(mappedBy = "address", cascade = {CascadeType.PERSIST,
CascadeType.MERGE,
CascadeType.DETACH, CascadeType.REFRESH})
@JsonIgnore
private Counterparty counterparty;

这两个条目都是我的发票条目的一部分。也许我在从一个表引用另一个表时犯了一个错误?

最佳答案

我认为问题在于自动生成...您是否手动创建了表,或者您是否允许 Hibernate 为您执行此操作...
如果您手动创建了数据库表,那么您一定忘记了自动递增 ID。
1.尝试将自动生成也添加到地址表上的ID...

@Id
@Column(name = "address_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
  • 如果您手动创建了表格,请尝试
  • ALTER TABLE table_name MODIFY column_name INTEGER NOT NULL AUTO_INCREMENT;

    关于java.sql.SQLIntegrityConstraintViolationException : Duplicate entry '0' for key 'PRIMARY' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46174756/

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