Spring Data REST,如何在列表中处理@Version属性

时间:2017-08-25 13:07:47

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

我正在使用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只是为了更改布尔属性,我只需要获取整个对象以获取版本。 方便吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

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

@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"