3
votes

Is there a way to ignore the generation of the mapper for the 3rd method in this code sample using mapstruct?

@Mapper(unmappedSourcePolicy = ReportingPolicy.IGNORE, unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface EmployeeMapper {

   EmployeeMapper MAPPER = Mappers.getMapper( EmployeeMapper.class );

   @Mapping(source = "id", target = "id")
   @Mapping(source = "firstName", target = "firstname")
   @Mapping(source = "surname", target = "surname")
   @Mapping(source = "employmentses", target = "employmentDTOList")
   EmployeeDTO employee2dto(Employees employees);

   @Mapping(source = "id", target = "id")
   @Mapping(source = "firstName", target = "firstname")
   @Mapping(source = "surname", target = "surname")
   @Mapping(target = "employmentDTOList", ignore = true)
   EmployeeDTO domainView2dto(EmployeeView employeeView);

   //to be ignored by Mapstruct
   EmployeePageDTO domainPage2dto(Page<EmployeeView> employeeViewPage);

}
1
what do you mean by "ignored" ? what is the desired output when you call that method ? - Gaetano Piazzolla
I want nothing to be generated for this method.. I want to write the mapper for it by myself.. - IvanNickSim
ok, get it. I'll answer the question - Gaetano Piazzolla

1 Answers

3
votes

You can simply define a default method inside the interface as stated here:

@Mapper(unmappedSourcePolicy = ReportingPolicy.IGNORE, unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface EmployeeMapper {

   EmployeeMapper MAPPER = Mappers.getMapper( EmployeeMapper.class );

   //.....

   //to be ignored by Mapstruct
   default EmployeePageDTO domainPage2dto(Page<EmployeeView> employeeViewPage) {
       //.... insert body here
   }
}