J'ai commencé à utiliser MapStruct récemment et j'ai eu ce doute. Est-il possible d'hériter des mappings d'une méthode dans une autre méthode qui est utilisée pour mapper une sous-classe de la sortie de la méthode précédente ?
Par exemple, si j'ai une classe Car qui doit être convertie en deux classes FourWheeler et DetailedFourWheeler (qui étend la classe FourWheeler), puis-je utiliser les mappings définis pour la conversion de Car en FourWheeler dans ma méthode qui convertit Car en DetailedFourWheeler ? Voici l'exemple de code
@lombok.Data
public class Car {
private String color;
private String brand;
private String variant;
}
@lombok.Data
public class FourWheeler {
private String paint;
private String company;
}
@lombok.Data
public class DetailedFourWheeler extends FourWheeler {
private String model;
}
Mon mappeur pour cela ressemble à -
@Mapper
interface FourWheelerMapper {
public static final FourWheelerMapper INSTANCE = Mappers.getMapper(FourWheelerMapper.class);
@Mappings({
@Mapping(source = "color", target = "paint"),
@Mapping(source = "brand", target = "company")
})
FourWheeler mapToFourWheeler(Car car);
@Mappings({
@Mapping(source = "color", target = "paint"),
@Mapping(source = "brand", target = "company"),
@Mapping(source = "variant", target = "model")
})
DetailedFourWheeler mapToDetailedFourWheeler(Car car);
}
Je veux savoir s'il est possible de changer la mapToDetailedFourWheeler comme -.
@InheritMappingsFromParent
@Mappings({
@Mapping(source = "variant", target = "model")
})
DetailedFourWheeler mapToDetailedFourWheeler(Car car);
Ici, mon InheritMappingsFromParent devrait apporter les mappings pour la couleur et la marque de la méthode précédente.
Je n'ai pas réussi à trouver quelque chose à ce sujet dans la documentation. Merci