0
votes

Problèmes dans la mise en œuvre d'un comportement personnalisé dans le mappeur de MapRut

J'ai les classes DTO suivantes: xxx

ainsi que leurs classes d'entité correspondantes: xxx

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: xxx

vttypedao ressemble à ceci: xxx

ma question est la suivante: Comment instancier un objet de vttdedao (ou au moins vtttonepo afin que je puisse passer si à VTTedaoimpl en tant que paramètre)?

Il n'y a pas de classe d'usine pour obtenir la mise en œuvre appropriée de VTTedao. < p> edit: vttdedao et sa mise en œuvre sont des composants tiers à mon projet.


2 commentaires

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.


3 Réponses :


0
votes

intégrer la carte-struct avec le printemps: strong>

http://mapstruct.org/documentation/stable/reference/html / # à l'aide de l'injection de dépendance

Remplacez @mapper fort> avec ci-dessous p> xxx pré>

et ajouter ci-dessous dans vttdedaoimpl P>

@Autowired  
private ConclusionMapper conclusionMapper;


1 commentaires

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.



1
votes

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 .

C'est basé sur la JPA, mais vous pouvez la cartographier facilement à votre problème.


0 commentaires

1
votes

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);
}


0 commentaires