mapstruct / mapstruct/mapstruct
Inconsistent behaviour with @MappingTarget, source objects and null values
Personne n'a encore pris cette issue.
- Langage dominant
- Java
- Étoiles
- 7.7k
- Forks
- 1.1k
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
### Expected behavior
I'd expect the targetvalues for the source object to be updated even if there is no dto present
### Actual behavior
The targetvalue for the source object will only be updated if the dto or at least one of the source objects is not null.
| DTO | source object| expected | actual |
|--------|--------|--------|--------|
| set | set | update with dto-contents and source object | update with dto-contents and source object |
| set | null | update with dto-contents and source object to null | update with dto-contents and source object to null |
| null | set | no update with dto-contents but updated source object |no update with dto-contents but updated source object |
| null | null | no update with dto-contents but updated source object to null | no update at all |
I think the issue is the guard clause at the beginning of the generated implementation. This should be ommitted if there's a parameter with a @MappingTarget annotation
### Steps to reproduce the problem
https://github.com/nicktar/mapstruct-mcve
The failing unit test demostrated the issue
### MapStruct Version
MapStruct 1.5.5-Final
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par le test unitaire en échec dans la reproduction nicktar/mapstruct-mcve et examinez la clause de garde de l’implémentation générée. Vérifiez les quatre combinaisons de DTO et d’objet source, puis confirmez qu’un @MappingTarget est mis à jour même lorsque le DTO et l’objet source sont tous deux null.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- tooling
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100