Простое сопоставление конфигурации Список<Объект> поле
Я пытаюсь отобразить два класса с почти одинаковыми полями: MetaInfoDTO
а также MetaInfo
,
Я попытался настроить сопоставление с сопоставлением по умолчанию. Проблема на List<Object> values
поле. У него такое же имя в другом классе. Итак, я думаю, это должно быть правильно сопоставлено. Смотрите тест в конце.
public class MetaInfoDTO
{
private String id;
private String key;
private String description;
private List<Object> values;
//Constructors, getters and setters...
public List<Object> getValues() {
return values;
}
public void setValues(List<Object> values) {
this.values = values;
}
}
public class MetaInfo
{
private String id;
private String key;
private String description;
private List<Object> values;
//Constructors, getters and setters...
public List<Object> getValues() {
return values;
}
public void setValues(List<Object> values) {
this.values = values;
}
}
И эта конфигурация орика:
mapperFactory.classMap(MetaInfoDTO.class, MetaInfo.class)
.byDefault()
.register();
Я создал тест, чтобы показать мою проблему:
@Test
public void metaInfoDTOTOMetaInfoWITHVALUES()
{
MetaInfoDTO dto = new StringMetaInfoDTO("key1", "desc1");
MetaInfo metainfo = this.mappingResources.getMapper().map(dto, MetaInfo.class);
for (int i = 0; i < 10; i++)
dto.getValues().add("s" + i);
assertThat(dto.getValues(), not(empty()));
assertThat(metainfo.getValues(), not(empty())); //<<<< IT'S EMPTY!!
}
Учебный класс:
public class StringMetaInfoDTO extends MetaInfoDTO
{
public StringMetaInfoDTO(String key, String description) {
this(key, description, new ArrayList<String>());
}
public StringMetaInfoDTO(String key, String description, List<String> values) {
super(MetaInfoTypeDTO.stringType, key, description, values.stream().map(e -> (Object)e).collect(Collectors.toList()));
}
}
Итак, после картирования, metainfo.getValues()
пустой! Что-то не так?