Spring + Hibernate 批量插入不起作用

问题描述 投票:0回答:1

我正在设置属性

spring.jpa.properties.hibernate.jdbc.batch_size=100
spring.jpa.properties.hibernate.order_inserts=true

添加到 20 个实体中的 1 个

@GeneratedValue(strategy = GenerationType.SEQUENCE)

其他实体有

@GeneratedValue(strategy = GenerationType.IDENTITY)

但是没有批量插入 entityManager.unwrap(Session.class).getJdbcBatchSize() 返回 null

我认为具有 IDENTITY 策略的实体会阻止对具有 SEQUENCE 策略的实体进行批量插入。

如何在不更改所有实体的 ID 生成策略的情况下避免这种情况?

我试图在调试模式下更改entityManager中的jdbBatchSize,并且使用SEQUENCE策略批量插入对我的实体效果很好

java spring-boot hibernate jpa
1个回答
0
投票

据我所知,如果您有整数或长 ID,则无法使用 GenerationType.IDENTITY 进行批量插入,因为 Hibernate 需要知道在批量插入期间它将使用哪个预定义序列。这就是为什么它需要 GenerationType.SEQUENCE。还有另一种方法可以解决这个问题。如果您使用Integer或Long id,您可以将它们更改为UUID。然后,您不必更改 GenerationType。

© www.soinside.com 2019 - 2024. All rights reserved.