是否有注释可忽略映射将在子类中覆盖的特定抽象方法?

时间:2019-04-30 13:33:17

标签: mapstruct

我希望在类的层次结构中的许多方法上使用mapstruct,但是我需要一些更高层次的抽象方法不被mapstruct自动映射,因为它们将在子类中具有完整的实现。在mapstruct文档中是否缺少对此的注释?

//I did not place @Mapper here because there are no methods to create maps for in this class
public abstract class SuperParentMapper {

  //declaration I want mapstruct to ignore
  public abstract Hoopdy hangdyToHoopdy(Hangdy hangdy);

}

@Mapper(componentModel = "cdi")
public abstract class NextParentMapper extends SuperParentMapper {

  //declaration I also want mapstruct to ignore
  @Override
  public abstract Hoopdy hangdyToHoopdy(Hangdy hangdy);

  //There are some other methods in here that I do need mapstruct to implement

}

@Mapper(componentModel = "cdi")
public abstract class DatChildMapper extends NextParentMapper {

  @Override
  public Hoopdy hangdyToHoopdy(Hangdy hangdy){
    //actual implementation
  }

  //There are some other methods in here that I do need mapstruct to implement

}

我希望子类成为实际的实现,但是mapstruct似乎试图为这些父类自动创建代码。我敢肯定我缺少明显的东西,但是我似乎无法仅仅使用子实现来得到它。在提到之前,我确实需要这些父类具有抽象方法,以便我可以移交父类并从它们中访问这些方法。

1 个答案:

答案 0 :(得分:0)

对于可能会犯与我相同的错误的任何人,请勿将@Mapper放在中级父类上。这就是问题所在。当我拿出它时,它产生的很好。