//serviceA.java
methodA(){
for(i<n){
methodB();
}
//throw an exception here.
}
//serviceB.java
methodB(){
List list = query("select from Subject where ...");
for(list){
otherBusiness(subject);
delete(subject);
}
}
环境:框架SSH,methodA、methodB事务控制使用
<prop key="*">PROPAGATION_REQUIRED,-java.lang.Throwable</prop>
表象:在methodA中循环了n次methodB,执行到异常处,发现methodB被提交了n-1次,最后一次methodB被会滚
原因:对Subject的操作应该是在对该表的查询时query(sql)被强制提交了
求教:我目前的做法是将query(sql)操作提到methodA,求教更好的解决方法
新年快乐!