spring中service的A方法调用B方法,只B中一条数据不成功,A和B都进行事务回滚?怎么操作 谢谢 我是新手

老大不笑 2013-09-04 07:34:40
service方法:
@Override
public String add(IBaseModel modelObj) throws Exception {
KmAssetApplyBase applyModel = (KmAssetApplyBase) modelObj;
//申请单待审,加锁
if(applyModel.getDocStatus().equals("20")){
JSONArray jsonArray=updateLockedCards(applyModel);
if(!jsonArray.isEmpty()){
//TODO 事务回滚

}
}
return super.add(modelObj);
}


public JSONArray updateLockedCards(IBaseModel model) throws Exception{
JSONArray jsonArr = new JSONArray();
JSONObject jsonObj = new JSONObject();
if (model instanceof KmAssetApplyBase) {
KmAssetCard card=null;
//处置单
if (model instanceof KmAssetApplyDeal) {
KmAssetApplyDeal deal=(KmAssetApplyDeal)model;
List<KmAssetApplyDealList> dealLists=deal.getFdApplyDealList();
for(KmAssetApplyDealList dealList:dealLists){
card=dealList.getFdAssetCard();
if(!kmAssetCardService.updateLock(card.getFdId())){
//加锁不成功
jsonObj.put("fdNo",card.getFdNo());
jsonObj.put("fdName",card.getFdName());
jsonArr.add(jsonObj);
}
}
}

spring中配置: <property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="copy*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="init*">PROPAGATION_REQUIRED</prop>
<prop key="clone*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>

描述:当updateLockedCards的for循环中的一条数据操作不成功时,那么在add()方法中对所有的数据库操作失效,进行事务回滚 ,怎么操作哦
新手求帮助 谢谢!
...全文
1882 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tony4geek 2013-09-13
  • 打赏
  • 举报
回复
全部都抛出。然后配置 事务。
MC-热狗 2013-09-13
  • 打赏
  • 举报
回复
Spring声明式事物 你值得拥有!
Qiancangpl 2013-09-12
  • 打赏
  • 举报
回复
在spring中给updateLockedCards事务管理,在add中修改如果数据操作不成功就手动抛出异常

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧