I am trying to update a collection using mapstruct like this:
List<Passenger> updatePassengers(@MappingTarget List<Passenger> passengers, List<Passenger> sourcePassenger);
Passenger updatePassenger(@MappingTarget Passenger passenger, Passenger sourcePassenger);
Now in generated sources updatePassenger method is generated as below:
public List<Passenger> updatePassengers(List<Passenger> passengers, List<Passenger> sourcePassenger) {
if ( sourcePassenger == null ) {
return null;
}
passengers.clear();
for ( Passenger passenger : sourcePassenger ) {
passengers.add( passenger );
}
return passengers;
}
Here its removing the passenger from the destination and setting passengers from source. I want to update individual passenger objects.
I went through the mapstruct docs and it says that it clears collection before updating.
Is there a way mapstruct could call updatePassenger method for each passenger?
In case you don't want the default behaviour of MapStruct kicking in you should write your own custom method that would perform the update.
default List<Passenger updatePassengers(List<Passenger> passenger, Lit<Passenger> sourcePassengers) {
//Do your logic here
}
On top of that, MapStruct cannot generate the code you need it doesn't know which passenger should be linked with which passenger.
In your definition you are saying that you want the passenger list to be update with the sourcePassengers list.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With