mapstruct / mapstruct/mapstruct

Inconsistent behaviour with @MappingTarget, source objects and null values

Ouverte
#3,453 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug
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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. 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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.