ModelMapper: Incorect сопоставление свойств из нулевых объектов - PullRequest
1 голос
/ 09 марта 2020

Я пытаюсь сопоставить исходный объект, свойство которого установлено на null, с целевым объектом, для которого это свойство установлено с другим объектом.

Ожидаемым результатом будет то, что свойство целевого объекта будет null после сопоставления. Вместо этого это свойство устанавливается на объект, а все его свойства устанавливаются на null.

. Вот пример:

public class ModelMapperTest {
    public static void main(String[] args) {
        ModelMapper modelMapper = new ModelMapper();

        User user = new User();
        user.setStatus(null);

        StatusDto statusDto = new StatusDto();
        statusDto.setId(1);
        statusDto.setName("Active");

        UserDto userDto = new UserDto();
        userDto.setStatus(statusDto);

        // user.status=null, userDto.status=StatusDto(id=1, name="Active")
        modelMapper.map(user, userDto);

        System.out.println("user = " + user);
        System.out.println("userDto = " + userDto);
    }    

    @Getter
    @Setter
    @ToString
    public static class User {
        private Status status;
    }

    @Getter
    @Setter
    @ToString
    public static class Status {
        private Integer id;
        private String name;
    }

    @Getter
    @Setter
    @ToString
    public static class UserDto {
        private StatusDto status;
    }

    @Getter
    @Setter
    @ToString
    public static class StatusDto {
        private Integer id;
        private String name;
    }
}

Вывод:

user = ModelMapperTest.User(status=null)
userDto = ModelMapperTest.UserDto(status=ModelMapperTest.StatusDto(id=null, name=null))

Можно ли как-то настроить сопоставление модели для установки UserDto.status на ноль?

...