【发布时间】:2017-03-10 20:55:24
【问题描述】:
如果之前有人问过这个问题,我很抱歉。我是 Spring 框架的新手,我有一个关于 @Transactional 的实际问题以及我遇到的问题。
在一个循环中,我使用 JDBC 和 SQL 存储过程将一些对象插入到数据库中。对于某些/无/所有对象,插入可能由于某种原因而失败。如果所有插入都没有错误,则可以,否则必须做两件事。首先需要回滚所有成功的插入,并返回所有错误的列表。
到目前为止,我已经想出了一个执行回滚的代码,但我无法弄清楚如何返回一个包含错误的数组。
@Transactional
public String[] insertSomeObjects(SomeObject[] some){
List<String> errors = new ArrayList<String>();
for(SomeObject temp:some){
try{
jdbcInsertFunction(temp);
}catch(Exception ex){ // If error occurs, ad it to error list
String error = createProperErrorMessage(ex);
errors.Add(error);
}
}
if (errors.size >0){
// If there are errors, throw exception and roll back
Throw new Exception
}
}
此代码工作正常,它插入所有对象,如果其中任何一个对象失败,它就会回滚。问题是我无法返回错误列表。
你知道如何解决这个问题吗?
【问题讨论】:
-
只返回errors.toArray();
-
在这种情况下你将如何进行回滚?
-
为什么不把错误放到异常对象中呢?
标签: java spring transactional