我有一个单线程的Quartz作业,在更改记录的“状态”列后启动。作业将传递记录的主ID,然后查找。由于一些奇怪的原因,石英工作看到了原始状态值。
该作业具有每秒钟重试查找一次的逻辑。起初我以为hibernate可能会返回旧对象,所以我添加了一个session.clear()
,但没有区别。然后我添加了一个jdbcTemplate.queryForMap
来绕过休眠来获取数据,但这也看到旧数据。
当Quartz作业记录旧值时,我在show视图和sql查询中看到了我手动调用数据库的新值。我甚至检查了版本属性并看到它已经改变但是Quartz作业具有旧值。
为什么Quartz作业无法识别出这种变化?
奇怪的是,这种逻辑在某些服务器上完全正常,其他服务器一直失败,而其他服务器则定期失败。
环境包括: