代码之家  ›  专栏  ›  技术社区  ›  Guerric P

使用动态dto进行部分实体更新

  •  0
  • Guerric P  · 技术社区  · 6 年前

    我有一个应用程序,我正在尝试使用 PATCH 请求。

    目前,我已经有了从http检索数据的dto对象,并使用orika库(配置为 mapNulls = false )

    到目前为止,这工作还不错,但它不能处理部分更新,因为我的dto对象没有区别 null 来自未提供值的值。如果我显式地将字段设置为 无效的 ,orika忽略它,值保持不变。

    然后我考虑使用泛型对象而不是DTO对象,但是这样做会失去 @JsonProperty 注释,它对控制哪个字段非常有用 access = Access.READ_ONLY 或者没有。

    如何从泛型世界和dto世界中获益?是否有方法反序列化为动态DTO?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Sidi    6 年前

    现在不支持此操作。您所能做的就是让两个不同的mapperfactory一个配置为mapnulls=true,另一个配置为mapnulls=false。由于它是普通的Java代码,可以不费力地轻松完成。

    最后将有一个mapperfacade用于patch方法,另一个用于创建更新。

    最好把DTO作为服务合同的一部分。