【问题标题】:JPA batch_size property does not work for native queryJPA batch_size 属性不适用于本机查询
【发布时间】:2020-12-15 16:10:48
【问题描述】:

我正在尝试使用本机查询进行批量插入。

@Repository
public interface Repository extends CrudRepository<Entity, Integer> {

    @Modifying
    @Query(value = "INSERT INTO table_name(value) VALUES (:value)", nativeQuery = true)
    void insert(@Param("value") String value);
}

我在 application.properties 文件中添加了 batch_size 属性

spring.jpa.properties.hibernate.jdbc.batch_size = 50

但在日志中,我看到每个插入都是单独处理的。是否可以将批处理应用于原生查询?

【问题讨论】:

  • 您多次调用此本机查询?
  • 是的,我多次调用它。
  • 你在使用@Transactional 吗?这样可能不行,可以使用saveAll方法批量插入。
  • 我相信saveAll 用于实体,但我使用的是本机查询。
  • 您使用什么 JDBC 驱动程序?您对实体 Entity 使用什么 generating identifier value 策略?

标签: sql spring-boot hibernate jpa bulk


【解决方案1】:

如果实体使用GenerationType.IDENTITY 标识符生成器,​​休眠将静默禁用批量插入/更新。

详情请点击以下链接: https://www.baeldung.com/jpa-hibernate-batch-insert-update#id-generation-strategy

【讨论】:

    猜你喜欢
    • 2021-01-19
    • 2017-10-01
    • 2018-12-16
    • 2016-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多