Есть ли аннотация для игнорирования отображения конкретного абстрактного метода, который будет переопределен в дочернем классе? - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу использовать 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 голосов
/ 30 апреля 2019

Для тех, кто может совершить ту же ошибку, что и я, не помещайте @Mapper в родительский класс среднего уровня. Это была проблема. Это сработало очень хорошо, когда я вынул это.

...