Hibernate 弹簧启动数据+;Oracle=批量更新不工作的实体

Hibernate 弹簧启动数据+;Oracle=批量更新不工作的实体,hibernate,spring-boot,spring-data,Hibernate,Spring Boot,Spring Data,我正在尝试使用CrudRespositories saveAll方法进行批处理/批量更新,但它似乎不起作用。生成日志: 2020-05-23 07:06:27.963Z INFO [nio-8080-exec-1] i.StatisticalLoggingSessionEventListener {} : Session Metrics { 314694800 nanoseconds spent acquiring 1 JDBC connections; 0 nanosecon

我正在尝试使用CrudRespositories saveAll方法进行批处理/批量更新,但它似乎不起作用。生成日志:

2020-05-23 07:06:27.963Z INFO  [nio-8080-exec-1] i.StatisticalLoggingSessionEventListener {} : Session Metrics {
    314694800 nanoseconds spent acquiring 1 JDBC connections;
    0 nanoseconds spent releasing 0 JDBC connections;
    54054998 nanoseconds spent preparing 12 JDBC statements;
    5762126698 nanoseconds spent executing 12 JDBC statements;
    0 nanoseconds spent executing 0 JDBC batches;
我认为
0 JDBC批处理
意味着批处理更新没有完成

我已为批处理配置了以下属性:

spring.jpa.properties.hibernate.jdbc.batch_size=30
spring.jpa.properties.hibernate.order_updates=true
spring.jpa.properties.hibernate.order_inserts=true
spring.jpa.properties.hibernate.batch_versioned_data=true
依赖项版本:

Spring boot : 2.2.5.RELEASE
Oracle : tried on both 11g and 12c
jdbc driver :
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
<version>18.3</version>
springboot:2.2.5.0版本
甲骨文:在11g和12c上都试用过
jdbc驱动程序:
com.oracle
ojdbc8
18.3

让我知道还需要做些什么才能让它起作用?如果提供这些属性不起作用,还有什么其他可能的解决方案?

我发现了这个问题。我使用的是一种较旧的方言,即org.hibernate.dialogue.oracle10gDialogue,它似乎不支持批处理。我把它改为org.hibernate.dial.Oracle12cDialect,它成功了。

确保在pom.xml中使用

<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>18.3.0.0</version>
com.oracle.database.jdbc
ojdbc8
18.3.0.0