【问题标题】:Mapstruct inherit and extract from child mapperMapstruct 从子映射器继承和提取
【发布时间】:2020-08-11 09:54:37
【问题描述】:

我有一个审计对象要记录createdupdatedcreator三个属性,如下图:

public class Audit {
    private OffsetDateTime created;
    private OffsetDateTime updated;
    private String creator;
}

每个 POJO 都有审计属性

public class A {
    private Audit audit;
}
public class B {
    private Audit audit;
}
public class C {
    private Audit audit;
}

...等

现在,我想问一下如何创建一个可重用的模型和映射器来提取 createdupdatedcreator 到父层(可能是继承或一些注释),如下结果:

// Before mapping
A {
    ...,
    audit: {
        created: ...,
        updated: ...,
        creator: ...
    }
}
// I wanna to mapping like these
A {
    ...
    created: ...,
    updated: ...,
    creator: ...
}
B {
    ...
    created: ...,
    updated: ...,
    creator: ...
}
C {
    ...
    created: ...,
    updated: ...,
    creator: ...
}

或者我必须为这些类的所有映射器使用@Mapping(source = audit.created, target = created) 注释?

【问题讨论】:

    标签: java spring-boot inheritance mapstruct


    【解决方案1】:

    我不确定我是否理解正确。但是,MapStruct 1.4.0.Beta3 定义了鸭式。您可以将自己的注释作为@Mapping(source = audit.created, target = created) 的简写,请参阅documentation

    在 1.3.x 中,您需要为您的目标/源定义一个通用的基本类型,并且您可以从基本映射方法继承映射。查看documentation

    【讨论】:

    • 感谢您的回复。但我真的很想找到一种方法,如接口或转换器来自动调整审计对象,而不使用@Mapping(source = audit.created, target = created) 和其他所有对象应用审计。
    猜你喜欢
    • 1970-01-01
    • 2022-10-23
    • 2012-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    相关资源
    最近更新 更多