【问题标题】:Spring Data REST, how to handle @Version property in listingsSpring Data REST,如何处理列表中的@Version 属性
【发布时间】:2018-02-03 13:12:16
【问题描述】:

我正在使用 Spring Boot 1.5.6 和 Spring Data REST。我知道这个讨论:With Spring Data REST, why is the @Version property becoming an ETag and not included in the representation?

很清楚为什么 SDR 将 @Version 属性转换为 Etag....但是这种非常常见的情况呢:我有一个实体列表(我使用 GET 获取数据)并且我想做一个逻辑删除其中之一。 所以我会在那个特定的实体上做一个PATCH。为了进行 PATCH,我需要设置 If-None-Match 标头,因此我需要知道版本。

在这种情况下,我使用GET 获取了我的列表,但是为了更改布尔属性我必须获取整个对象以获取版本的对象的PATCH。 方便吗?有更好的方法吗?

【问题讨论】:

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


    【解决方案1】:

    答案是肯定的。我相信 Spring/REST 应该在实体主体中将它作为第一类属性返回,但是 REST 混淆了两个不同的问题:实体版本控制和 HTTP 消息传递。解决方案是公开一个恰好保存对象版本的新“幻像”属性:

    @Version
    private int version; // the entity version, managed by JPA
    
    public int getVersion() { return this.version; } // Spring suppresses this
    public int getVisibleVersion() { return this.version; } // appears in entity JSON as "visibleVersion"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 2020-10-15
      • 2013-09-17
      • 1970-01-01
      • 2016-08-19
      相关资源
      最近更新 更多