人。
我正在考虑避免春季丢失更新的最简单方法。
在@Transactional方法内部,我正在更新持久对象。为了避免丢失更新的可能性,@ LastModifiedDate和@Version批注应使用类似的方法处理它:

  @LastModifiedDate
  @Version
  private DateTime updateTime;


我认为这是实现我所需要的一种捷径,但是您知道其中的任何缺点吗?他们会按预期工作吗?每条信息将不胜感激。最好的祝福。

最佳答案

我认为没有缺点-对于Spring 5.1.5和Spring Data JPA 2.1.5,它可以按我的预期工作。我没发现有人抱怨。

编辑(10/07/2019)

我发现的唯一问题是,当您使用Date类型的字段作为时间戳并将其存储为DATETIMEMySQL v5.6中(已在MySQL v5.7中修复)。 DATETIME的精度降低到几秒钟,因此,如果您有两个事务在同一秒内运行,则版本将不会更新,并且Entity进入我无法再更新的状态。

TLDR-如果您打算将@Version@LastModifiedDate一起使用,请确保时间戳记的存储精度至少为毫秒,并且如果您更频繁地访问它,则可能会受到限制。

10-06 05:59