java如何在保证事务同时回滚的情况下读未提交?
问题是这样的,先更新一个实体数据,再根据其ID反查数据库查询更新后的数据,组装另一类实体数据保存
想把 更新和新增操作放在同一事务里以达到任一出错就回滚的目的,但是这样一来如何在新增时读到更新数据?此时因为更新和新增处于同一事务,还未提交。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
保证不了,常用做法是加一个version或者update timestamp,entity每次更新都会更新version或者timestamp。如果事物查询后得到的数据,做更新,发现version或者timestamp与读取时不同,就抛出异常,回滚事务。
在同一个事物中,更新后(事务未提交)再查询也是可以查询到更新后的数据,所以你的这个过程是可以的,是有数据库保证的。
举个例子吧:
最后结果: