我想通过发送空请求将null值设置为实体。
例如:
PATCH: "{deleteDate: null}" to http://localhost/api/entity/1
但它不起作用。
我找到了here有关如何处理PATCH请求的信息:
- 创建了一个新的Foo实例
- Foo中填充了随请求一起发送的所有值
- 加载了由URI提供的id的Foo实体
- 两个对象之间不同的所有属性都会从新的Foo复制到持久的Foo,除非新Foo中的值为null。
我是否正确理解使用PATCH请求spring-data-rest服务API无法将值设置为NULL?
答案 0 :(得分:6)
在Spring上下文中,PATCH方法中的空值表示没有更改。 如果你想写空值,你可以
1)使用PUT方法;
2)实现您自己的DomainObjectMerger类,您可以在其中使用
sourceValue != targetValue;
3)使用DomainObjectMerger.NullHandlingPolicy配置。
取决于您的Spring Data REST版本。
答案 1 :(得分:1)
https://stackoverflow.com/a/37206768/6078466中的所有3个选项都将解决所描述的问题,但会有另一个问题:
PATCH request
中未指定的所有其他属性也将是nullified
。
似乎已在v2.2.x
修复了https://jira.spring.io/browse/DATAREST-345。