web-dev-qa-db-fra.com

MapStruct ignore les propriétés automatiquement non mappées

J'utilise MapStruct avec de grands modèles (plus de 50 champs) partagés entre différents cas d'utilisation commerciale dans mon code. Selon le point d'entrée, certaines propriétés seront mappées et d'autres non. Lorsque je crée mon projet, je reçois toujours le message "AVERTISSEMENT: propriétés de cible non mappées".

J'ai recherché et vu qu'il est possible de dire au mapstruct d'ignorer le champ en utilisant la sémantique

@Mapping(target = "propName", ignore = true)

Le problème est, étant donné mes objets avec autant de champs, il faudrait beaucoup de code pour ignorer chaque propriété unique dans chaque classe de mappeur. Je ne veux pas non plus cet avertissement dans mon journal. Existe-t-il un moyen de dire à mapstruct d'ignorer ce qui n'est pas mappé, en évitant ce message?

25

Vous pouvez définir la "stratégie cible non mappée" sur le @Mapper niveau ou via @MapperConfig pour partager un paramètre entre plusieurs mappeurs:

@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface MyMapper {}
49
Gunnar

Pour ignorer le mappage automatique de MapStruct 1.3.0. Guide de référence final:

Au moyen du @BeanMapping (ignoreByDefault = true), le comportement par défaut sera un mappage explicite, ce qui signifie que tous les mappages doivent être spécifiés au moyen du @Mapping et aucun avertissement ne sera émis sur les propriétés de cible manquantes.

@BeanMapping(ignoreByDefault = true)
OneObj map(TwoObj two);
2