首页 > 解决方案 > 使用子字段版本对 Spring 数据进行乐观锁定

问题描述

我知道,如果我将 @Version 注释作为字段直接包含在类中以保持不变,那么乐观锁定开箱即用。但是,我不想更改我的数据模型,我正在尝试下面描述的解决方案。在 Spring Data MongoDB REST 应用程序中,实体的数据模型如下:

@Document
public class Person {

    @Id
    @JsonProperty(value = "id")
    String id;
    @JsonProperty(value = "firstName")
    String firstName;
    @JsonProperty(value = "lastName")
    String lastName;
    @JsonProperty(value="metadata")
    MetaData metaData;

    //GETTER AND SETTERS

}

我的目的是注释 MetaData 类的字段版本,以便在 Person 类中使用乐观锁定。

public class MetaData {

    @JsonProperty(value = "createdAt")
    private String createdAt;

    @JsonProperty(value = "createdBy")
    private String modifiedAt;

    @JsonProperty(value = "createdAt")
    private String createdAt;

    @JsonProperty(value = "createdBy")
    private String modifiedAt;

    @JsonProperty(value = "version")
    @Version
    private Integer version;

//GETTERS AND SETTERS
}

上述解决方案不起作用。有什么方法可以实现吗?提前致谢。

标签: javarestspring-dataspring-data-mongodbspring-data-rest

解决方案


您需要确保将WriteConcern其设置为ACKNOWLEDGED


推荐阅读