源类和目标类扩展相同的类mapstruct

问题描述

abstract class baseClass {
 String updateUser;
}

class A extends baseClass {
 String updateTime;
}

class B extnds baseClass {
  String updateTime;
}

@Mapper(componentModel = "spring")
public interface FLGenericMapper {
  B mapToB(A a);
}

我有类似的代码。从A映射到B时。 我看到updateUser没有映射。 请有人告诉我,我应该做些什么来映射抽象类的updateUser。

解决方法

我不确定是什么问题。你用龙目岛吗?您是否使用字段映射?

如果您使用字段映射,则您的字段应该是公共的(否则,任何人都不能访问它们)。如果将它们公开,对我有用。这是我认为应该的代码:

@Mapper(componentModel = "spring")
public interface MyMapper {

    B mapToB(A a);

    abstract class BaseClass {
        public String updateUser;
    }

    class A extends BaseClass {
        public String updateTime;
    }

    class B extends BaseClass {
        public String updateTime;
    }

}

结果:


@Component
public class MyMapperImpl implements MyMapper {

    @Override
    public B mapToB(A a) {
        if ( a == null ) {
            return null;
        }

        B b = new B();

        b.updateUser = a.updateUser;
        b.updateTime = a.updateTime;

        return b;
    }
}