我有一个使用Spring Boot/hibernate的简单项目,在单元测试中插入新值时有bug。对于测试,我使用了一个带有虚拟数据(data.sql)的新数据库,在启动后,当插入测试运行时,我出现了一个错误“密钥冲突”:
2019-01-15 10:14:00,286 ERROR [main] org.hibernate.engine.jdbc.spi.SqlExceptionHelper: Unique index or primary key violation: "PRIMARY KEY ON PUBLIC.NATURAL_PERSON_CATEGORY(ID)"; SQL statement:
insert into natural_person_category (created_by, creation_date, deletion_by, deletion_date, modification_date, modificationd_by, comment, label, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?) [23505-194]
我管理带有注释的ID:@ID@GeneratedValue(策略=GenerationType.Auto)
@Data
@Entity
@Table
public class NaturalPerson {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonProperty("id_natural_person")
protected Integer id;
@JsonProperty("first_name")
private String firstName;
@JsonProperty("last_name")
private String lastName;
@JsonProperty("is_minor")
private boolean isMinor;
private String mail;
@OneToMany(cascade = CascadeType.ALL)
private List<Address> addresses;
@OneToOne(cascade = CascadeType.ALL)
@JsonProperty("category")
private NaturalPersonCategory naturalPersonCategory;
@JsonProperty("is_main")
private boolean isMain;
@JsonGetter("fullname")
public String getFullname() {
return this.firstName + " " + this.lastName;
}
}
@data@entity@table公共类地址{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonProperty("id_address")
protected Integer id;
private String line1;
private String line2;
private String line3;
@JsonProperty("postal_code")
private String postalCode;
private String city;
@ManyToOne
@JoinColumn(name = "id_country")
private Country country;
@JsonProperty("start_date")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date startDate;
@JsonProperty("end_date")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endDate;
}
@Data
@Entity
@Table
public class NaturalPersonCategory {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonProperty("id_natural_person_category")
protected Integer id;
@NotNull
protected String label;
@Column(columnDefinition = "TEXT")
protected String comment;
}
我已经解决了这个问题
@GeneratedValue(strategy = GenerationType.IDENTITY)
嗨,我是Spring Data JPA的新手,我想知道即使我将Id传递给实体,Spring data jpa也是插入而不是合并的。我想当我实现持久接口并实现这两个方法时: 它将自动合并而不是持久化。 我有一个名为User like的实体类: 再上一节课 我有一个名为UserRepostory的自定义存储库,它扩展了JpaReopistory。当我看到实现演示SpringDataJpa使用以上两种方
我使用Spring Data、Spring Boot和Hibernate作为JPA提供程序,我想提高批量插入的性能。 我引用这个链接来使用批处理: http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html/ch15.html 这是我的代码和应用程序。插入分批实验的属性。 我的服务: 与批处理相关的部分application.properti
我正在尝试读取包含700K条记录的Excel文件,并将这些记录批量插入MySQL数据库表中。 请注意,Excel解析速度很快,我可以在50秒左右的时间内将实体对象放入中。 我使用Spring Boot和Spring数据JPA。 下面是我的部分文件: 以及我的部分: 以下是我的 : 下面是类: 有人能告诉我我在这里做了什么不正确的事情吗? 编辑: 进程未完成并最终抛出错误:- 谢谢
在我的spring boot应用程序中,我试图进行批插入以提高写入性能。问题是,我定期获得重复数据,对于这些数据,我的表上有一些唯一的约束。在进行串行插入时,我只捕获DataIntegrityException并忽略它们。但在执行批插入时,即使一次插入失败,也不会保存整个批。我希望hibernate仍然保存不会抛出错误的记录。我正在使用存储库。saveAll()用于插入,我的数据库是Mysql
我将Spring Boot与Hibernate结合使用,为一个简单的web应用程序创建RESTful API,在该应用程序中,我读取一个。csv文件,并将每一行插入到mysql数据库表中。我能够成功地做到这一点,但它需要很长的时间为任何大的csv文件。我明白最好对insert语句进行批处理,以减少事务的数量,但我不认为我用当前的代码实现了这一点。这是我目前正在做的(工作,但非常缓慢): csvup
我定义了2个具有单向一对多关系的实体: 在command.class中: 在StockDetails.class中: null