Spring事务里能统计到已经被删除并commit的数据
数据库为oracle
。
逻辑为在一个是事务里,另起了一个内部事务做插入操作,然后会有个程序把插入数据移除。
之后循环查询统计数据是否被删除,只有数据被删除了,才能继续下面操作。
现在的情况是一直能统计到被删除的数据?问题是数据确实已经被删除了。
事务的隔离级别是READ_COMMITTED
。
@Service
public class TestServiceImpl implements TestService {
@Autowired
private TestDao testDao;
@Autowired
private TestServiceImpl testService;
@Override
@Transactional(isolation = Isolation.READ_COMMITTED)
public void exec() {
// 插入数据并提交
testService.insert();
// 数据被其他程序删除了
// 循环查询统计数据是否被删除
int count = 1;
while (count > 0) {
// 问题为此处一直能统计到被删除的数据
count = testDao.count();
if (count > 0) {
Thread.sleep(1000);
}
}
// 数据被删除后,执行下面操作
.......
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void insert() {
// 插入数据
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题已解决。
原因为
循环查询统计数据是否被删除
的时候,相同的查询SQL,结果会缓存,而程序那里删除数据比较慢,所以统计结果被缓存下来了。解决方法:查询语句加个当前时间作为条件,保证每次SQL不一样。