之前做的一个功能,更新订单为取消状态失败,事务回滚,那么订单回滚过后的状态已经是未取消。
但是,事物即使回滚了,但订单状态却被置成了已取消。这个问题困扰了很久。
代码是
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