sinat_36339134
HessianTes
采纳率0%
2019-09-30 11:04

Java代码里修改某个字段的状态马上查询这个状态的数据查询不到

有两张表
主订单表 和订单详情表
假设一个订单里面有多个详情 当其中一条详情的状态变更为 发货的时候
需要判断这个订单下面所有的详情 是不是已经发货了 如果都发货了
修改主订单里面状态为已发货 否则是部分发货
问题
我修改完这个详情的状态的时候(本来这已经是最后一条了) 会马上去查询
这笔订单下是否还存在没有发货的数据
结果发现怎么查都能查得到还存在一条 但是最后一条详情的状态我是在代码里面改了的
这个怎么解决啊 我马上改了之后应该是查不到zhe'tiao'shu'ju'de

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • xionglangs 编程爱好者熊浪 2年前

    mysql的默认事务级别是可重复读,也就是在一个事务中,读取到的数据都是第一次读取到的数据,意识就是你在这个事务中多次查询获取的数据是一样的,不管有没有别的事务提交或者你在这个事务里面做了任何修改(当然后面这种情况,事务都没有提交,数据肯定是一样的,主要说的是前面那种情况,有别的事务修改数据)。

    点赞 评论 复制链接分享
  • y173447104 菩提丶道人 2年前

    建议你针对这种情况下做个异步任务就行了,如果框架是用的spring,spring有个事务正常提交的监听,可以把上述业务转移到事务结束后的监听里面

    点赞 评论 复制链接分享
  • JonathanYan JonathanYan 2年前

    别光说,上代码上截图,n多正确和错误的情况在你糊里糊涂的情况下都能被你描述为当前的状况。
    你就把能反映你错误的相关东西都发上来让我们帮你判断,而不是让我们通过你的判断猜你的现状再猜解决方案。

    点赞 评论 复制链接分享
  • guangcaiwudong Kevin.Y.K 2年前
    1. 你加了事务没有?
    2. 是同一个方法里面修改了,然后马上查询吗?
    点赞 评论 复制链接分享
  • zea_liu zea_liu 2年前

    你打个断点,在你更新状态后,去数据库看看有没有修改,就知道你是否有修改成功了,如果猜的没错,应该是没有修改成功的,因为你修改完自豪和需要flush

    点赞 评论 复制链接分享
  • zz00217 空白如空 2年前

    所以就是没改成功?你修改后,看看你的数据库改字段有无修改?没的话,你看看你sql 是不是错了或者commit没?

    点赞 评论 复制链接分享

为你推荐