J'ai les classes DTO suivantes: ainsi que leurs classes d'entité correspondantes: p> aussi, tous correspondant DAO et JPA Les interfaces de référentiel sont présentes.
Maintenant, j'écris mon interface de mappeuse de Mapstructeur qui doit être utilisée pour la cartographie des entités à DTO et inversement. Voici le mappeur: p> vttypedao ressemble à ceci: p> Il n'y a pas de classe d'usine pour obtenir la mise en œuvre appropriée de VTTedao. P> < p>
3 Réponses :
Remplacez et ajouter ci-dessous dans
http://mapstruct.org/documentation/stable/reference/html / # à l'aide de l'injection de dépendance vttdedaoimpl P>
@Autowired
private ConclusionMapper conclusionMapper;
Il semblait qu'il y ait un malentendu. Je ne veux pas utiliser mon Mapstructeur dans Vttdedao, je veux le contraire: en utilisant vttdedao dans mon métrage. En ajoutant un composantModel à mon mététrical et en la modifiant dans VTTedaoimpl ne m'aidera pas. Au fait, Vttdedao et sa mise en œuvre sont des composants tiers à mon projet.
De votre commentaire, je vous ai eu envie de faire des recherches sur votre vttdedao pendant le processus de cartographie. Vous pouvez envelopper dans une autre classe et la remettre en tant que @Context annotant comme argument de mappage. Le MapStruit ne considérera pas de cette classe comme source ou cible. Cependant, il appellera des méthodes de cycle de vie dans cette classe .. Jetez un coup d'œil à cet exemple: https://github.com/mapstruct/mapstruc-examples/tree/master/mapstruc-jpa-child-parent/src . P>
C'est basé sur la JPA, mais vous pouvez la cartographier facilement à votre problème. P>
i Finalement, j'ai fini par la mise en œuvre suivante:
@Mapper public interface ConclusionMapper { @Mappings({ @Mapping(target = "cTypes", source = "cTypeEntities") }) Conclusion toConclusion(ConclusionEntity entity); List<Conclusion> toConclusionList(List<ConclusionEntity> entities); @InheritInverseConfiguration ConclusionEntity fromConclusion(Conclusion conclusion); List<ConclusionEntity> fromConclusionList(List<Conclusion> conclusions); @Mappings({ @Mapping(target = "vType", ignore = true) }) ConclusionTaxType toCType(CTypeEntity cTypeEntity); List<CType> toCTypes(List<CTypeEntity> cTypeEntities); @Mappings({ @Mapping(target = "vTypeId", source = "vType.id") }) CTypeEntity fromCType(CType cType); List<CTypeEntity> fromCTypeList(List<CType> cTypes); }
Quelle est la relation entre le vttdedao et le Mapstructeur? BTW: Vous pouvez ajouter un paramètre à l'annotation @mapper appelée ComponentModel. Ceci vous pouvez régler au ressort qui rend le mapper un composant de ressort.
Il n'y a pas de relation entre VTTedao et Mapstructeur. Vttdedao est une sorte de tiers Dao et j'ai besoin de l'utiliser dans mon Mapstructeur. Et autant que je sache, l'annotation de mon équipstructeur avec ComponentModel me permet de l'utiliser dans une implémentation de la DAO. Mon objectif est vice versa: je veux que Vttdedao soit utilisé dans mon Mapstructeur.