Я хочу сделать частичное обновление для одной из моих сущностей, но если одна из свойств имеет значение 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 свойство, установленное в нуль, в то время как объект userDocument имеет его со значением, затем, когда я сохраняю его в базе данных, это значение исчезает (потому что оно преобразовано в ноль).

Что может быть не так?

Спасибо.

0
Wrong 29 Май 2019 в 14:21

2 ответа

Лучший ответ

Хорошо, так что конфигурация не для той цели, о которой я думал.

Я решил проблему, объединив обновленный объект со старым, вот так:

    @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);
    }
2
Wrong 29 Май 2019 в 12:19

Mybatis рамки? Вы не установили выборочное сохранение --selective

<insert id="insertSelective" parameterType="com.zjl.domain"> insert into table_name <trim prefix="(" suffix=")" suffixOverrides=","> <if test="id != null"> id, </if> <if test="createDate != null"> create_date, </if> <if test="modifiedDate != null"> modified_date, </if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="id != null"> #{id,jdbcType=BIGINT}, </if> <if test="createDate != null"> #{createDate,jdbcType=TIMESTAMP}, </if> <if test="modifiedDate != null"> #{modifiedDate,jdbcType=TIMESTAMP}, </if> </trim> </insert>

-1
stevetn lee 29 Май 2019 в 11:49