Java 简单映射配置列表<;对象>;领域
我试图用几乎相同的字段映射两个类:Java 简单映射配置列表<;对象>;领域,java,orika,Java,Orika,我试图用几乎相同的字段映射两个类:MetaInfoDTO和MetaInfo 我已尝试使用默认映射配置映射器。问题出在列表值字段上。它在另一个类上具有相同的名称。所以,我想它必须被正确地映射。请参阅最后的测试 public class MetaInfoDTO { private String id; private String key; private String description; private List<Object> values;
MetaInfoDTO
和MetaInfo
我已尝试使用默认映射配置映射器。问题出在列表值
字段上。它在另一个类上具有相同的名称。所以,我想它必须被正确地映射。请参阅最后的测试
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;
}
}
我创建了一个测试以显示我的问题:
@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 void MetaInfodToMetaInfoWithValues()
{
MetaInfoDTO dto=新字符串MetaInfoDTO(“键1”、“描述1”);
MetaInfo MetaInfo=this.mappingResources.getMapper().map(dto,MetaInfo.class);
对于(int i=0;i<10;i++)
dto.getValues().add(“s”+i);
断言(dto.getValues(),而不是(empty());
assertThat(metainfo.getValues(),not(empty());//请添加StringMetaInfoDTO
的代码。您是否有StringMetaInfoDTO类型的类映射?我可以看到您在执行map(dto,metainfo.class)后正在向dto
添加值
-您希望如何填写metainfo
值?我已经添加了StringMetaInfoDTO
类。不,我在Mapper
上没有映射配置。嗯,我很笨!请添加StringMetaInfoDTO
的代码。您有StringMetaInfoDTO类型的类映射吗?我可以看到您正在添加值odto
在执行map(dto,MetaInfo.class)
之后-您希望如何填写MetaInfo
值?我已经添加了StringMetaInfoDTO
类。不,我在映射器上没有映射配置。嗯,我很愚蠢!
@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()));
}
}