繁体   English   中英

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

[英]Spring Data REST, how to handle @Version property in listings

我正在使用 Spring Boot 1.5.6 和 Spring Data REST。 我知道这个讨论: 使用 Spring Data REST,为什么 @Version 属性成为 ETag 而未包含在表示中?

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

在这种情况下,所以我取出我的名单有GET ,反而使一个PATCH物体的只是改变布尔属性我已经获取整个对象刚刚拿到的版本。 方便吗? 有没有更好的方法?

答案是肯定的。 我相信 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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM