JpaItemWriter MultiThreader主键违反

时间:2019-01-14 12:55:14

标签: spring spring-batch

我正在将jpaItemWriter与多线程一起使用。 但是我一直在收到SQL错误:1062,SQLState:23000主键冲突。尽管我正在获取不同的记录并插入相同的记录。 是JpaItemWriter ThreadSafe吗?在多线程中如何使Processor和writer线程安全,以免发生上述异常。 有时我还会收到以下异常

java.sql.SQLException: Deadlock found when trying to get lock; try restarting transaction
o.h.e.jdbc.batch.internal.BatchingBatch  : HHH000315: Exception executing batch [java.sql.BatchUpdateException: (conn=629417) Duplicate entry 

预先感谢

1 个答案:

答案 0 :(得分:0)

是的, downloadAndOpenPdf(name) { let path = null; if (this.platform.is('ios')) { path = this.file.documentsDirectory; } else if (this.platform.is('android')) { path = this.file.dataDirectory; } const transfer = this.transfer.create(); transfer.download(globalData.imagesUrl + name, path + 'myfile.pdf').then(entry => { let url = entry.toURL(); this.document.viewDocument(url, 'application/pdf', {}); }); } 是线程安全的(如Javadoc中所述)。

与数据库读取器和写入器一起使用多线程步骤不是最佳选择,我建议改为使用分区步骤。