您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

ModelMapper:基于子类选择映射

ModelMapper:基于子类选择映射

我将使用ObjectMapper而不是modelmapper

在 类中,添加获取鉴别值的可能性。

//..
public class Parent {

    @Column(name = "type", insertable = false, updatable = false)
    private String type;
    //getters and setters
}

您的ParentDTO应该映射到Child(*)DTO

@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        include = JsonTypeInfo.As.PROPERTY,
        property = "type")
@JsonSubTypes({
        @JsonSubTypes.Type(value = ChildADTO.class, name = "child_a"),
        @JsonSubTypes.Type(value = ChildBDTO.class, name = "child_b")
})
 public abstract class ParentDTO {
   // ..
 }

在转换服务/方法中,添加一个对象忽略未知的映射器(忽略您未在DTO类中声明的内容

    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNowN_PROPERTIES, false);

只需调用

Parent parent = // get from repository
ParentDTO parentDTO = objectMapper.readValue(objectMapper.writeValueAsBytes(parent), ParentDTO.class);

这样,您的ParentDTO总是用正确的类型实例化。

其他 2022/1/1 18:18:45 有431人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶