Список отображает его предыдущее значение - PullRequest
0 голосов
/ 28 мая 2020

Итак, я использую modelmapper для преобразования всех моих сущностей, до сих пор работал нормально. У меня есть объект TaskDTO со списком Double в его атрибутах. Я могу восстановить этот список, но как только запрос сделан, все последующие запросы получат тот же список.

Вот часть моего конвертера:

public static TaskDTO converTaskToDTO(Task source) {
    List<Double> icList = new ArrayList<>();
    for (ChargeInitial c : source.getCharge()) {
        icList.add(c.getCharge());
    }
    System.out.println(icList);
    TypeMap<Task, TaskDTO> typeMap = modelMapper.getTypeMap(Task.class, TaskDTO.class);
    if (typeMap == null) {

        modelMapper.addMappings(new PropertyMap<Task, TaskDTO>() {
            @Override
            protected void configure() {
                map().setLot(source.getLot().getName());
                map().setProject(source.getLot().getProject().getName());
                map().setCollaborator(source.getCollaborator().getEmail());
                map().setCharge(icList);

            }
        });
    }

    return modelMapper.map(source, TaskDTO.class);

}

Однако sysout печатает правильные список для меня.

Например, если в первом запросе я получаю плату [1,2] за этот список, второй запрос также будет [1,2] для каждого списка оплаты, даже если я получаю право результат, который равен [1,2,3,4,5] в моем system.out.

В чем может быть проблема?

EDIT

Я изменил метод setCharge в TaskDTO следующим образом, работает нормально.

public void setCharge(List<ChargeInitial> charge) {
    List<Double> list = new ArrayList<>();
    for (ChargeInitial c : charge) {
        list.add(c.getCharge());
    }
    this.charge=list;
}

1 Ответ

1 голос
/ 30 мая 2020

Вы можете использовать Converter, List<ChargeInitial> до List<Double>.

public static TaskDTO converTaskToDTO(Task source) {

    TypeMap<Task, TaskDTO> typeMap = modelMapper.getTypeMap(Task.class, TaskDTO.class);
    if (typeMap == null) {

        PropertyMap<Task, TaskDTO> mapping = new PropertyMap<Task, TaskDTO>() {
            @Override
            protected void configure() {
                map().setLot(source.getLot().getName());
                map().setProject(source.getLot().getProject().getName());
                map().setCollaborator(source.getCollaborator().getEmail());
            }
        };
        modelMapper.addMappings(mapping);

        Converter<List<ChargeInitial>, List<Double>> chargeInitialConverter = new AbstractConverter<>() {
            @Override
            protected List<Double> convert(List<ChargeInitial> source) {
                List<Double> icList = new ArrayList<>();
                for (ChargeInitial c : source) {
                    icList.add(c.getCharge());
                }
                System.out.println(icList);
                return icList;
            }
        };
        modelMapper.addConverter(chargeInitialConverter);

    }

    return modelMapper.map(source, TaskDTO.class);

}
...