J'ai 2 entités:
Entité 1:
public class Master {
private int id;
private Set<SubMaster> subMasters= new HashSet<SubMaster>(0);
}
public class SubMaster{
private int subId;
private String subName;
}
Entité 2:
public class MasterDTO {
private int id;
private Set<SubMaster> subMasters= new HashSet<SubMaster>(0);
}
public class SubMasterDTO{
private int subId;
private String subName;
}
J'utilise MapStruct Mapper pour mapper les valeurs de POJO à un autre.
public interface MasterMapper{
MasterDTO toDto(Master entity);
}
Je suis capable de mapper avec succès Master
vers MasterDTO
. Mais, la collection imbriquée de SubMaster
dans Master
n'est pas mappée à son homologue dans MasterDTO
.
Quelqu'un pourrait-il m'aider dans la bonne direction?
Cet exemple dans le dépôt Github de Mapstruct est une vitrine exacte de ce que vous essayez de faire.
TL; DR Vous aurez besoin d'un mappeur distinct pour la classe SubMaster
(appelons-la SubMasterMapper
), puis mettez une annotation @Mapper(uses = { SubMasterMapper.class })
sur votre MasterMapper
:
public interface SubMasterMapper {
SubMasterDTO toDto(SubMaster entity);
}
@Mapper(uses = { SubMasterMapper.class })
public interface MasterMapper {
MasterDTO toDto(Master entity);
}