人。
我正在考虑避免春季丢失更新的最简单方法。
在@Transactional方法内部,我正在更新持久对象。为了避免丢失更新的可能性,@ LastModifiedDate和@Version批注应使用类似的方法处理它:
@LastModifiedDate
@Version
private DateTime updateTime;
我认为这是实现我所需要的一种捷径,但是您知道其中的任何缺点吗?他们会按预期工作吗?每条信息将不胜感激。最好的祝福。
最佳答案
我认为没有缺点-对于Spring 5.1.5和Spring Data JPA 2.1.5,它可以按我的预期工作。我没发现有人抱怨。
编辑(10/07/2019)
我发现的唯一问题是,当您使用Date
类型的字段作为时间戳并将其存储为DATETIME
在MySQL
v5.6中(已在MySQL
v5.7中修复)。 DATETIME
的精度降低到几秒钟,因此,如果您有两个事务在同一秒内运行,则版本将不会更新,并且Entity进入我无法再更新的状态。
TLDR-如果您打算将@Version
与@LastModifiedDate
一起使用,请确保时间戳记的存储精度至少为毫秒,并且如果您更频繁地访问它,则可能会受到限制。