spring mvc service层事务回滚问题 25

在下订单的service方法中,加了@Transactional注解,默认是抛出运行时异常的时候事务回滚,但是该方法中有多个对数据库的操作,例如,先扣除优惠券,再扣除账户... 在下订单的service方法中,加了@Transactional注解,默认是抛出运行时异常的时候事务回滚,但是该方法中有多个对数据库的操作,例如,先扣除优惠券,再扣除账户余额,现在问题是,如果扣除优惠券的时候失败了,如果手动抛出异常,事务的确能回滚,数据库账户的优惠券不会被扣除(但返回的信息不符合要求),但是如果扣除失败后不手动抛出异常,而是返回失败信息和结果代码,则返回信息更友好,但是改动被提交到数据库,请问有什么好的办法?
补充点伪代码:
展开
 我来答
lost_in
2015-09-22 · TA获得超过396个赞
知道小有建树答主
回答量:249
采纳率:0%
帮助的人:183万
展开全部
你可以抛出一个自定义的运行时异常
class RollbackRuntimeException extends RuntimeException{} , 在调用这个方法的时候,这样写:
try{
service.createOrder();
}catch(RollbackRuntimeException e) {
//正常流程,什么也不做

}

或者不要使用申明式事务,使用编程式事务,手动控制事务边界,
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式