【问题标题】:Optimistic Locking with Spring Data using a subfield Version使用子字段版本对 Spring 数据进行乐观锁定
【发布时间】:2018-10-04 14:37:52
【问题描述】:

我知道,如果我将@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
}

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

【问题讨论】:

    标签: java rest spring-data spring-data-mongodb spring-data-rest


    【解决方案1】:

    您需要确保将WriteConcern 设置为ACKNOWLEDGED

    【讨论】:

    • MetaData 和 Person 是从 JSON 文件生成的。在使用 MongoDB 的情况下,我可以选择是否将 MetaData 设为单独的文档。
    猜你喜欢
    • 2020-11-26
    • 2014-07-06
    • 2016-09-23
    • 2014-07-02
    • 2021-09-27
    • 2015-06-10
    • 2018-04-27
    • 2016-05-30
    • 2018-10-22
    相关资源
    最近更新 更多