hibernate:
dialect: org.hibernate.spatial.dialect.postgis.PostgisDialect
#dialect: org.hibernate.dialect.PostgreSQLDialect
order_updates: true #需要添加的配置
order_inserts: true #需要添加的配置
jdbc:
batch_size: 100 #需要添加的配置
batch_versioned_data: true #需要添加的配置
修改数据库实体类
默认情况下,数据库实体类的ID生成方式不能为GenerationType.IDENTITY,在这种情况下,jpa是默认不采用批量方式进行插入或更新的,参考文献里面说是把id生成方式改成GenerationType.SEQUENCE,但是
我发现如果改成这种方式,那么批量插入数据的时候会出现数据丢失的情况,所以干脆直接去掉,自己在代码里面生成objectid。
@Data
class Test {
本文的参考连接里面说要加这个注解,但是我发现是不能加的,加这个后会出现批量导入时数据丢失的bug,应该是频繁的插入,导致id重复了,JpaRepository中save()方法,当表中id存在就会执行update而不是insert,所以就会出现数据丢失了。
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "objectid", nullable = false)
private Integer objectid;
private String name;
最后用saveAll()进行插入或更新即可。