我们有一个select查询,用于检查状态是否已编辑,如果没有,则对状态为已编辑的同一记录执行更新。如果已经存在,则向用户显示错误,表示无法编辑记录。这个逻辑是用dao层编写的,它是从struts动作调用的服务层调用的。
当多个用户同时执行相同的任务时,我们将获得两个编辑记录。这是因为没有同步吗? 同步逻辑块会解决问题吗?或者我们需要使用一些表锁来处理。
该应用程序正在生产中。我们在许多其他模块中都有类似的逻辑。处理这个问题的最佳和最安全的方法是什么。
我们正在使用Struts 2和ibatis。