是否有人知道任何捆绑,或任何Doctrine计划实施新的乐观锁定策略,如Telerik框架中的那个?
这个策略非常好,因为它不使用版本号或时间戳,它会将输入的旧值与新值进行比较,并且仅针对更改的输入进行比较。
因此,如果我有两种不同的形式使用当前策略(时间戳或版本控制)更新同一实体,即使不更新相同的数据,也会有2个用户发生冲突。
答案 0 :(得分:0)
我知道这对于互联网来说是一个相当古老的问题,因此,我将在理论上阐述如何做到这一点。
每列锁定意味着有一种机制可以检测每列的更改 - 因此要么对行进行哈希处理(或者我们关注的列),并且使用哈希比较来检测/跟踪更改,或者我们单独跟踪每个列
然后必须在每个请求的基础上应用此跟踪,以确定何时更改。这是正常的@Version装饰器逻辑适用的地方。
Telerik能够处理每列的更改,因为在浏览器中比较了信息(阵列比较,最有可能)。这是一种孤立的数据状态,在更新之前与其他浏览器/数据库不同步。
这里最简单的选择是不允许两个表单冲突(就数据而言)并删除锁定 - 或者 - 将表单数据与主表分离并允许它们单独更新(并与sql join合并) )。