请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

提问:

为什么在DailyTrainTicketService.selectGenDaily中使用dailyTrainSeatService的表查询座位总数,生成每日座位表的信息和余票查询不是放在同一个@Transactional方法的事务下吗,外面事务总体还没结束,dailyTrainSeatService对应的表信息数据应该还未提交到数据库,然后在DailyTrainTicketService的selectGenDaily怎么查到了啊(新日期下daily_train_seat中应该还没有该天的信息)

正在回答 回答被采纳积分+3

2回答

甲蛙 2023-08-23 15:40:30

你问的这个应该是事务隔离级别,就是读已提交、读未提交等,可以百度了解下

0 回复 有任何疑惑可以回复我~
  • 提问者 Scarecrow001 #1
    spring注解@Transactional隔离级别默认和数据库一致,mysql8.0默认隔离级别是读已提交,我debug后,然后他这个方法总体还未结束,里面新生成的的daily_train_seat的数据应该提交不到数据库啊,我却在数据库中看见了。我意思是正常情况下新生成的日期座位数据在同一个事务下还未结束时,对应的daily_train_seat中应该还没有该天的座位数,而却在本事务方法中却用到了daily_train_seat表中新生成的数据,竟然还成功了,不知道为什么。
    回复 有任何疑惑可以回复我~ 2023-08-23 16:00:49
  • 甲蛙 回复 提问者 Scarecrow001 #2
    如果先插入后读取,两个动作是在一个事务中,一般是能读到的。如果是在两个事务,就读不到了。
    回复 有任何疑惑可以回复我~ 2023-08-24 16:01:55
  • 提问者 Scarecrow001 回复 甲蛙 #3
    嗯嗯好的谢谢老师
    回复 有任何疑惑可以回复我~ 2023-08-25 10:32:32
提问者 Scarecrow001 2023-08-22 18:31:37

我刚才debug试了,@Transactional标记的dailyTrainService.genDaily方法在debug未结束,座位信息就提交到数据库了,然后我直接暂停business应用l,然后该方法的事务也没有回滚,daily_train_seat表中新生成的座位信息还在《绷住了》

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信