我有一系列步骤,其中涉及:
- 第一步:从数据库中读取并写入csv(第一行)
- 第二步:从数据库读取并写入csv(第二行)
- 第3步:将spring-batch与Univocity集成以比较第一条腿和第二条腿的CSV
- 第4步:比较后返回匹配项的列表
- 第5步:将列表写入数据库
- 第六步:从数据库读取到csv
我被困在Step5。我不知道如何使用spring-batch直接从列表写入数据库。
我尝试使用jdbc batchUpdate,但是遇到“连接关闭”问题。
这是我的RestController类: 第一个作业“作业”处理步骤1-4。第二次调用(readFromPtrxList())将列表中的项目插入数据库,而第二个任务“ pjob”从数据库读取并写入csv文件:
public void executeManualJob(@PathVariable String report) {
try {
JobParameters jobParameters = new JobParametersBuilder()
.addString("report",report)
.addLong("time",System.currentTimeMillis())
.toJobParameters();
jobLauncher.run(job,jobParameters).getExitStatus().getExitCode();
ptrxList.readFromPtrxList();
jobLauncher.run(pjob,jobParameters).getExitStatus().getExitCode();
} catch (Exception e) {
e.printStackTrace();
}
}
这是执行步骤5时的错误消息:
Caused by: org.hibernate.TransactionException: Unable to commit against JDBC Connection
at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.commit(AbstractLogicalConnectionImplementor.java:87) ~[hibernate-core-5.3.12.Final.jar:5.3.12.Final]
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:272) ~[hibernate-core-5.3.12.Final.jar:5.3.12.Final]
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:104) ~[hibernate-core-5.3.12.Final.jar:5.3.12.Final]
at org.springframework.orm.jpa.JpaTransactionmanager.doCommit(JpaTransactionmanager.java:533) ~[spring-orm-5.1.10.RELEASE.jar:5.1.10.RELEASE]
... 74 common frames omitted
Caused by: org.postgresql.util.PSQLException: This connection has been closed.
at org.postgresql.jdbc.PgConnection.checkClosed(PgConnection.java:782) ~[postgresql-42.2.8.jar:42.2.8]
at org.postgresql.jdbc.PgConnection.commit(PgConnection.java:768) ~[postgresql-42.2.8.jar:42.2.8]
at com.zaxxer.hikari.pool.ProxyConnection.commit(ProxyConnection.java:361) ~[HikariCP-3.2.0.jar:na]
at com.zaxxer.hikari.pool.HikariProxyConnection.commit(HikariProxyConnection.java) ~[HikariCP-3.2.0.jar:na]
at org.hibernate.resource.jdbc.internal.AbstractLogicalConnectionImplementor.commit(AbstractLogicalConnectionImplementor.java:81) ~[hibernate-core-5.3.12.Final.jar:5.3.12.Final]
... 77 common frames omitted