我想通过发送null请求将null值设置为实体。
举例来说:
PATCH: "{deleteDate: null}" to http://localhost/api/entity/1
字符串
但它不起作用。
我找到了here如何处理PATCH请求的信息:
- 创建了一个新的Foo示例
- Foo填充了与请求一起发送的所有值
- 将加载具有URI提供的id的Foo实体
- 两个对象之间所有不同的属性都将从新的Foo复制到持久化的Foo中,除非新的Foo中的值为null。
我是否正确地理解了不可能通过对spring-data-rest服务API的PATCH请求将value设置为NULL?
3条答案
按热度按时间neskvpey1#
在Spring上下文中,PATCH方法中的null值意味着没有更改。如果你想写空值,你可以
1)使用PUT方法;
2)实现您自己DomainObjectMerger类,您可以在其中使用以下条件扩展方法合并:
字符串
3)使用DomainObjectMerger.NullHandlingPolicy配置。
取决于Spring Data REST版本。
mm9b1k5b2#
egorlitvinenko's answer中的所有3个选项都将解决所描述的问题,但会有另一个问题:
PATCH request
中未指定的所有其他属性也将被“无效”。似乎 spring-data-rest,issue-345已经在
v2.2.x
中修复。c86crjj03#
可以使用Map<String,Object>作为请求体,然后可以在map上使用forEach提取数据。
示例控制器:
字符串
示例服务:
型