Используйте spring Mapper для отображения объекта Map — Java

#java #spring #jpa #mapper

#java #spring #jpa #mapper

Вопрос:

Я сталкиваюсь с некоторыми трудностями при попытке использовать функциональность аннотации картографа spring. Я хотел бы использовать mapper для отображения объекта Map в Java следующим образом:

Счетчики хостов :

 @Data
@NoArgsConstructor
@AllArgsConstructor
public class HostsCounters {
    private Map<String,Map<String,Long>> hostsList;
}
  

Mapper :

 @Mapper(componentModel = "spring")
public interface ResponseMapper {
    GeneralResponse toResponse(SevCount sevCount, HostsCounters hostsList, List<RegDAO> Reg);
}
  

Общий ответ:

 @Data
@NoArgsConstructor
public class GeneralResponse {
    private List<RegDAO> Reg;
    private HostsCounters hostsList;
    private SevCount sevCount;
}    
  

Ошибка:

Не удается сопоставить свойство «java.util.Map> hostsList» с «HostsCounters hostsList». Подумайте о том, чтобы объявить / реализовать метод сопоставления

Ответ №1:

Просто используйте:

 @Mapping(source = "hostsList", target = "hostsList")
GeneralResponse toResponse(SevCount sevCount, HostsCounters hostsList, List<RegDAO> Reg);
  

Но я бы настоятельно посоветовал вам избавиться от одинаковых имен с разными значениями:

HostsCounters hostsList -> HostsCounters hostsLists