Open felipealvesgnu opened 4 years ago
We're hitting this too, which renders the module useless to us.
Is there a simple universal work-around we're not aware of?
If not, is this by design or should it be fixed?
in the beginning I tried this:
@Bean
public ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
Jsr310ModuleConfig config = Jsr310ModuleConfig.builder()
.dateTimePattern("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") // default is yyyy-MM-dd HH:mm:ss
.datePattern("yyyy-MM-dd")
.build();
modelMapper.registerModule(new Jsr310Module(config));
return modelMapper;
}
With that code, you can format the pattern you receive the data, from your front-end. So I started to had some problems with empty data that was coming from my Json, because of that I removed this module, and stayed just with modelmapper core and simply made a change in my DTO replacing date attributes from String to Localdate in DTOs and JPA entities. Have you tried it?
In my case I don't control the data coming in, and it's protobuf, so it has optional blank strings for dates that I simply need to skip.
You can take this piece of code, that uses skip
as an example:
modelMapper.typeMap(ActivityDTO.class, Person.class).addMappings(map -> map.skip(Person::setId));
In that case, I'm letting the mapper know that I don't want to set Activity.id
attribute into Person.id
, telling it to skip the mapping on that part.
Do you got it?
Yes, I can skip individual fields, but I have dozens and dozens of fields to deal with, so a universal solution would be preferable.
Of course, it's easy enough to setup a custom blank-skipping converter for LocalDate/LocalDateTime, and that's what I've done, but that does mean this module is useless. :)
Have you tried this, in your config class? It will ignore all incoming null attributes:
@Configuration
public class ModelMapperConfig {
@Bean
public ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
modelMapper.getConfiguration().setSkipNullEnabled(true);
return modelMapper;
}
}
@felipealvesgnu again, thanks, but in our case the incoming fields are empty strings.
I'm trying to map from a NULL json string field and I'm getting:
and when with an empty string field I get: