【发布时间】:2019-02-16 14:00:57
【问题描述】:
您好,我有一个要求,我正在读取一个文件打击是文件看起来如何的示例
文件.xls
id scode value1 value2 value3 ------ 以此类推
0 acdss 12 6 14 ----- 没有例外
1 acxx 0.14 5 12 ----- 异常——回滚
2 cxsas 52.2 24 21 ---- 没有例外
对于每一行,在执行一些业务逻辑后,我必须将数据插入/更新到 3 个不同的表中
所以我的插入/更新在 for 循环和每一行中运行。
问题是如果在将数据插入/更新到数据库中的任何行时发生任何异常,我想回滚从该特定行的所有 3 个表中的插入并继续插入该行的其余部分 正如 id 0 和 2 的文件示例中提到的,没有例外,数据应该插入到所有 3 个表中,对于 id 1,它应该回滚所有插入。 我正在为我的数据库操作使用 jdbcTemplate 下面是我实现的示例代码
class writer {
public void persistData() {
// code to read file and created object for each table
// size of file here is 3 so loop is running 3 times and table1Object
// and table2Object and table3Object has rows to be inserted into
// database table A,B,C
for (int i = 0; i < 3; i++) {
service.persistData(table1Object[i], table2Object[i], table3Oject[i]);
}
}
}
class service {
@Transactional(propagation = Propagation.REQUIRED_NEW, readOnly = false)
public void persistData(ob1,ob2,ob3){
dao.insertionOrUpadteForTableA(ob1);
dao.insertionOrUpadteForTableB(ob2);
dao.insertionOrUpadteForTableC(ob3);
}
}
使用这种方法,我的整个事务正在回滚,谁能建议我如何实现这一点。
【问题讨论】:
标签: java spring spring-boot spring-mvc