当前位置: 首页 > 知识库问答 >
问题:

Mapstruct忽略方法生成

易俊远
2023-03-14

有没有一种方法可以忽略使用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个答案

孔建柏
2023-03-14

您可以简单地在接口内定义一个默认方法,如下所述:

@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
   }
}
 类似资料:
  • 有几种方法可以忽略mapstruct中未映射的目标属性。 对于特定方法,我们可以列出要忽略的所有属性: 是否有一种方法可以混合这些方法并忽略方法级别的所有属性,而无需明确列出所有属性?

  • 我有以下内容: 我想忽略在RegimenEntity中设置的regimenDrugs内的所有RegimenDrugEntity对象的id。 此映射(target=“regimenDrugs.id”,ignore=true)不编译。

  • 我们希望能够将未映射的SourcePolicy设置为ReportingPolicy. ERROR,以便默认情况下丢失的源会大声失败。但是,有时源对象模型包含与目标无关的内容。因此,我们希望能够执行以下操作: 可以对目标执行类似操作。如果我尝试上述操作,我会得到错误,因为映射中需要目标。

  • 问题内容: 这个问题本质上是相反的这一个 我有这样的方法: 当我加载它时,Hibernate抱怨我没有称为的属性。但是我不想要一个叫做-我不需要存储数据的属性-这仅仅是逻辑。 hibernate状态: org.hibernate.PropertyNotFoundException:在com.mycomp.myclass类中找不到空置属性的设置器… 我可以在方法中添加注释以使Hibernate忽略它

  • 我有以下DTO和域对象。我正在使用Mapstruct将域对象复制到DTO对象。 使用下面的映射器将域映射到DTO。我不想将电话属性从域映射到DTO。怎么做?我尝试在mapping ignore中提供嵌套目标属性,但它给出了错误:

  • 我正在使用MapStruct和在我的代码中的不同业务用例之间共享的大模型(超过50个字段)。根据入口点的不同,有些属性将被映射,有些则不被映射。当我构建我的项目时,我总是会得到“警告:未映射的目标属性”消息。 我已经研究过,并且看到可以通过使用语义命令来告诉mapstruct忽略该字段 问题是,给定我的对象具有如此多的字段,忽略每个映射器类中的每个属性将需要大量的代码。我也不想在我的日志上出现这个