我遇到了可以由用户配置的主要数据迁移问题,让我们说如下:
try {
daoManager.beginTransaction();
for (Entity node : nodeList) {
boolean inserted;
if (migrationConfig.canInsert()) {
try {
inserted = daoManager.getDaoEntity().insert(node);
}
catch(IndexDuplicityException ex) {
inserted = false;
//I want the transaction to continues when this Exceptions is
//throwed
}
}
if (migrationConfig.canUpdate() && !inserted) {
modificoEntidad = daoManager.getDaoEntity().update(node);
}
}
//Later
if (//Business Logic) {
throw new MustRollBackTransaction();
}
daoManager.commitTransaction();
} catch (MustRollBackTransaction ex) {
daoManager.RollBack();
}
我的问题是,当抛出IndexDuplicityException时,将忽略任何未来的事务,给我这个异常
PSQLException:当前事务被中止,命令被忽略直到 交易结束块
有没有办法让我的交易允许失败的有效声明,而不是中止整个交易?
感谢。
答案 0 :(得分:0)
尝试回滚事务并在IndexDuplicityException上启动一个新事务:
}catch(IndexDuplicityException ex) {
inserted = false;
daoManager.RollBack();
daoManager.beginTransaction();
}