之前做的一个功能,更新订单为取消状态失败,事务回滚,那么订单回滚过后的状态已经是未取消。
但是,事物即使回滚了,但订单状态却被置成了已取消。这个问题困扰了很久。
代码是
OrderInfo orderInfo = orderInfoDao.findByCode(String orderSin);//这底层调用的是hibernate的list();
orderInfo.setOrderStatus("已取消");
在dao层:
update ecs_order_info set order_status=:order_status,updated=:updateTime where order_id=:order_id and order_status=:oldOrderStatus
Query query1 = session.createSQLQuery(sqlStr);
query1.setParameter("order_status", orderInfo.OrderStatus;
query1.setParameter("order_id", orderInfo.getId());
query1.setParameter("oldOrderStatus", "待确认");
。
查了一波资料后,
参考:http://blog.csdn.net/yang_lover/article/details/45057181
http://blog.csdn.net/sunhuwh/article/details/9183539
本文针对一个订单系统中出现的订单状态更新失败问题进行详细分析。在事务回滚后,订单状态异常地显示为已取消,而非预期的未取消状态。通过对代码逻辑的梳理和事务机制的研究,最终定位并解决了问题。

1898

被折叠的 条评论
为什么被折叠?



