首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mapstruct Mapper扩展

Mapstruct Mapper扩展
EN

Stack Overflow用户
提问于 2021-05-13 02:09:36
回答 1查看 42关注 0票数 0

Hi this似乎适用于添加额外的方法,但不适用于在现有方法上添加新注释。假设我们有以下类:

代码语言:javascript
复制
public class SourceClass {
    private String field_1;
    private String field_2;
}

public class TargetParent {
    private String field_a;
}

public class TargetChild extends TargetParent {
    private String field_b;
}

父对象是框架的一部分,可以由其他方扩展。子对象是添加新字段的具体扩展的一个示例。

我正在计划一种映射层次结构的方法,如下所示:

代码语言:javascript
复制
@Mapper
public interface ParentMapper {
    @Mapping(source="field_1", target="field_a")
    public TargetParent convert(SourceClass source);
}

@Mapper
public interface ChildMapper extends ParentMapper {
    @Mapping(source="field_2", target="field_b")
    public TargetChild convert(SourceClass source);
}

我希望看到ChildMapper的实现具有以下特点:

代码语言:javascript
复制
public TargetChild convert(SourceClass source){
    // target instanciation through factory here
    target.setField_a(field_1);
    target.setField_b(field_2);
}

但这不起作用:@Mapping注解似乎不会被继承。

我可以试着找出一些替代的解决方案,但似乎我开始破解框架,这不是我的意图。

我是不是漏掉了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-05-15 16:36:08

如果你想继承某些注解,你应该使用Mapping configuration inheritance

例如:

代码语言:javascript
复制
@Mapper
public interface ParentMapper {
    @Mapping(source="field_1", target="field_a")
    public TargetParent convert(SourceClass source);
}

@Mapper(config = ParentMapper.class)
public interface ChildMapper {
    @Mapping(source="field_2", target="field_b")
    @InheritConfiguration
    public TargetChild convert(SourceClass source);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67508950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档