【问题标题】:Partial entity update using dynamic DTO使用动态 DTO 进行部分实体更新
【发布时间】:2018-11-27 06:29:30
【问题描述】:

我有一个应用程序,我正在尝试使用 PATCH 请求实现部分更新。

现在我有从 HTTP 检索数据的 DTO 对象,并使用 Orika 库映射到 JPA 实体(使用 mapNulls = false 配置)

到目前为止,这工作得很好,但它不适用于部分更新,因为我的 DTO 对象无法区分 null 值和未提供的值。然后,如果我将一个字段显式设置为null,Orika 会忽略它并且值保持不变。

然后我考虑使用通用对象而不是 DTO 对象,但是这样做我会失去 @JsonProperty 注释的好处,这对于控制哪个字段是 access = Access.READ_ONLY 非常有用。

我如何从泛型世界和 DTO 世界中受益?有没有办法反序列化为动态 DTO ?

【问题讨论】:

    标签: java spring-mvc spring-boot jpa orika


    【解决方案1】:

    目前不支持此功能。您所能做的就是让两个不同的 MapperFactory 一个配置为 mapNulls=true,另一个配置为 mapNulls=false。由于它是纯 Java 代码,因此无需太多努力即可轻松完成。

    您最终将拥有一个 MapperFacade 用于 PATCH 方法,另一个用于创建更新。

    最好将 DTO 保留为服务合同。

    【讨论】:

      猜你喜欢
      • 2011-03-06
      • 1970-01-01
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      相关资源
      最近更新 更多