この質問が以前に尋ねられた場合は申し訳ありません。私はSpringフレームワークを初めて勉強しており、@Transactionalについての実用的な質問があり、問題があります。@ Transactionalでマークされたメソッドからすべてのエラーを返すには?
ループでは、JDBCとSQLストアドプロシージャを使用してデータベースにオブジェクトを挿入しています。一部の/なし/すべてのオブジェクトに対して何らかの理由で挿入が失敗することがあります。すべての挿入にエラーがない場合は、2つのことを行う必要があります。まず成功したすべての挿入をロールバックし、すべてのエラーのリストを返さなければなりません。
これまでのところ、私はロールバックを行うコードを考え出しましたが、エラーのある配列を返す方法を見つけることはできません。
@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()を返します。 – user1211
この場合、どのようにロールバックを行いますか? – rob
エラーを例外オブジェクトに入れないのはなぜですか? – kaqqao