[英]Spring Data JPA + Hibernate do execute save methods, but don't execute insert/update statements
问题
问题在于,在使用Maven进行的项目的每个构建中,该构建都会随机生成一个工作jar或一个损坏的jar。 显然,代码或配置都没有任何改变。
我的意思是坏了吗?
通常,每5/6个构建,生成1个有效的JAR,而4/5被破坏。 破损的罐子和工作罐子与二进制比较相同。
编译JAR后,如果JAR被破坏,则每次执行都会被破坏,无论它执行了多少次。 工作的人也是如此。
我已经尝试过的
组态
我有一个基于Spring Data JPA和Hibernate的Spring Batch项目。 批处理由sh文件执行。 如您在配置中看到的,出于调试原因,我将hibernate.show_sql
参数设置为true。 该数据库是Oracle 11g。
POM:
<properties>
<spring-version>5.1.5.RELEASE</spring-version>
<hibernate-version>5.4.1.Final</hibernate-version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-core</artifactId>
<version>4.1.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate-version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate-version}</version>
</dependency>
.....
</dependencies>
休眠属性:
hibernate.synonyms=true
hibernate.allocationSize=1000
hibernate.order_inserts=true
hibernate.order_updates=true
hibernate.show_sql=true
hibernate.jdbc.batch_versioned_data=true
hibernate.id.new_generator_mappings=true
hibernate.jdbc.batch_size=30
hibernate.generate_statistics=false
工作日志:
2019-06-27 10:42:03.558 [pool-3-thread-19] INFO i.a.n.b.t.XXX (246) - Elaborazione TABLE1 con SEQU: 2071042
Hibernate: select SEQUENCE1.nextval from dual
Hibernate: insert into TABLE2 (........) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: select column1, column2 ... from TABLE3 where condtion
2019-06-27 10:42:03.651 [pool-3-thread-19] INFO i.a.n.b.s.i.BaseOrderServiceImpl (185) - Recuperato record dalla TABLE3 con ID : 2071042
日志损坏:
2019-06-27 10:42:03.558 [pool-3-thread-19] INFO i.a.n.b.t.XXX (246) - Elaborazione TABLE1 con SEQU: 2071042
Hibernate: select SEQUENCE1.nextval from dual
INSERT MISSING HERE
Hibernate: select column1, column2 ... from TABLE3 where condtion
2019-06-27 10:42:03.651 [pool-3-thread-19] INFO i.a.n.b.s.i.BaseOrderServiceImpl (185) - Recuperato record dalla TABLE3 con ID : 2071042
寻求帮助:
每次需要部署该项目时,我都会多次构建该项目,几个月。 我想一劳永逸地解决这个问题,感谢您的帮助。
如果您需要一小段代码,请问我,但通常来说,除了基本实体外,它们都是正常的,@ @Transactional
表示法可以与工作JAR一起正常工作。
谢谢。
更新资料
如建议的那样,我尝试将spring和hibernate依赖关系统一到同一版本。 问题仍然存在。
更新pom
<properties>
<spring-version>5.0.12.RELEASE</spring-version>
<hibernate-version>5.2.17.Final</hibernate-version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.batch</groupId>
<artifactId>spring-batch-core</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.2.17.Final</version>
</dependency>
</dependencies>
我通过以下步骤解决了该问题:
这些步骤解决了该问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.