首页 > 解决方案 > 未添加目标的 mapstruct、Java 和 Spring 问题

问题描述

我确实有一个 DTO 类和一个像这样的实体类。

class ADTO {
....
....
   HashSet<BDTO> b; 
}

class AEntity {
.....
......
   HashSet<BEntity> b; 
}

class BDTO {
...
....
    
}

class BEntity {
.....
......
   AEntity a; 
}

 

我尝试将映射器与用途一起使用

@Mapper(componentModel = "spring", uses=BMapper.class)
interface AMapper {
    
  ADTO toDTO(AEntity a);
   
  AEntity fromDTO(ADTO a);  
} 

@Mapper(componentModel = "spring", uses=AMapper.class)
interface BMapper {
    
  BDTO toDTO(BEntity b);
   
  BEntity fromDTO(ADTO a, BDTO b); 

} 

它用于“JPA 实体”内的“一对多”关系。“DTO”用于 JSON(杰克逊解析器)。

ADTO toDTO(AEntity a);

生成器类使用 Bmapper 上述方法。

AEntity fromDTO(ADTO a); 

没有使用Bmapper。如何强制使用Bmapper

标签: javaspringjpamapstruct

解决方案


尝试使用@InheritInverseConfiguration. 它建议代码生成器也将逆映射方法的所有映射应用到带注释的方法。

@Mapper(componentModel = "spring", uses=BMapper.class)
interface AMapper {
    
  ADTO toDTO(AEntity a);

  @InheritInverseConfiguration 
  AEntity fromDTO(ADTO a);  
}

推荐阅读