Spring数据休息:通过PATCH请求设置空值

Tar*_*ron 8 java rest spring spring-data

我想通过发送空请求将null值设置为实体.

例如:

PATCH: "{deleteDate: null}" to http://localhost/api/entity/1
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

我在这里找到如何处理PATCH请求的信息:

  • 创建了一个新的Foo实例
  • Foo将填充随请求一起发送的所有值
  • 加载具有由URI提供的id的Foo实体
  • 两个对象之间不同的所有属性都会从新的Foo复制到持久的Foo,除非新Foo中的值为null.

我是否正确理解使用对spring-data-rest服务API的PATCH请求将值设置为NULL是不可能的?

ego*_*nko 6

在Spring上下文中,PATCH方法中的空值表示没有更改。如果要写空值,可以

1)使用PUT方法;
2)实现自己的DomainObjectMerger类,在其中可以扩展条件合并,例如

sourceValue != targetValue;
Run Code Online (Sandbox Code Playgroud)

3)使用DomainObjectMerger.NullHandlingPolicy配置。
取决于您的Spring Data REST版本。