Dans la version MapStruct 1.1.0.Final, cela a été possible ....MapStruct: Comment passer l'objet d'entrée à l'expression?
@Mappings({
@Mapping(target = "transaction.process.details", expression = "java(MappingHelper.mapDetails(request))"),
//more mappings
})
Response requestToResponse(Request request);
Il était possible, car la méthode était mapDetails
(par hasard?) Généré dans la méthode requestToResponse
. C'est pourquoi request
n'était pas nul.
Maintenant, depuis 1.1.0.Final ne fonctionnait pas avec Lombok, je devais passer à 1.2.0.CR2. Avec cette version, le mapDetails
sera généré dans une méthode séparée où request
n'est pas passé, donc request
est null dans cette méthode maintenant et j'obtiens un NPE avec l'expression. (C'est une sous-sous-méthode de requestToResponse
maintenant.)
Ai-je mal utilisé l'expression, alors est-ce que ça a fonctionné par hasard, ou est-ce que la nouvelle version a un bug? Si aucun bug, comment dois-je passer l'instance request
à l'expression correctement?
Merci, fonctionne à nouveau :) – Bevor
Assurez-vous que vous avez de bons tests pour cela, les propriétés cibles imbriquées a été amélioré dans 1.2.0 et il pourrait y avoir des cas où il ne fonctionne pas correctement (il était buggé avant aussi bien) – Filip