Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单映射配置列表<;对象>;领域_Java_Orika - Fatal编程技术网

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类型的类映射吗?我可以看到您正在添加值o
dto
在执行
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()));
    }

}