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