gpt4 book ai didi

java - ModelMapper 不忽略空值

转载 作者:行者123 更新时间:2023-12-02 09:50:25 32 4
gpt4 key购买 nike

我想对我的一个实体进行部分更新,但如果一个属性为 null,则要更新的实体也会将该值设置为 null。我希望如果源中的某个属性为 null,则保留源中的属性。

我已经尝试过,但没有运气:

    @Bean
public ModelMapper modelMapper() {
ModelMapper modelMapper = new ModelMapper();
modelMapper.getConfiguration().setPropertyCondition(Conditions.isNotNull());
modelMapper.createTypeMap(String.class, Date.class);
modelMapper.addConverter(new StringToDate());
modelMapper.addConverter(new DateToString());
return modelMapper;
}

然后我像这样更新我的对象:

    @Override
public void editUser(final User user) {
UserDocument userDocument = this.usersRepository.findByIdAndActivo(user.getId(), true)
.orElseThrow(UserNotFoundException::new);

userDocument = this.modelMapper.map(user, UserDocument.class);
this.usersRepository.save(userDocument);
}

user 对象有 1 个属性设置为 null,而对象 userDocument 为其设置了值,然后当我将其保存到数据库中时,该值消失了(因为它已转变为 null)。

可能出了什么问题?

谢谢。

最佳答案

好吧,配置并没有达到我想象的目的。

我通过将更新的对象与旧的对象合并解决了这个问题,如下所示:

    @Override
public void editUser(final User user) {
UserDocument userDocument = this.usersRepository.findByIdAndActivo(user.getId(), true)
.orElseThrow(UserNotFoundException::new);

this.modelMapper.map(user, userDocument);
this.usersRepository.save(userDocument);
}

关于java - ModelMapper 不忽略空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56359427/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com