JAVA-使用ModelMapper映射表达式,但不使用setter

时间:2018-08-22 08:11:05

标签: java collections setter modelmapper

我正在使用ModelMapper将JPA实体映射到DTO。我有实体收藏 dto由wsimport从wsdl文件中生成,但不会生成集合的setters

WaitForSingleObject

我使用一个简单的MapperUtils映射实体和dto

public class sampleEntity{
    private String name;
    private Collection<String> list;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }    

    public Collection<String> getList() {
        return list;
    }

    public void setList(Collection<String> list) {
        this.list = list;
    }
}

public class sampleDTO{
    private String name;
    private Collection<String> list;

    //getters & setters

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Collection<String> getList() {
        return list;
    }
//no collection setters with jaxb!!! Use getList().add()

}

那么,如果Entity.XXXX是Collection,那么如何使用ModelMapper来使用DTO.getXXXX.add()?

1 个答案:

答案 0 :(得分:1)

我不知道ModelMapper是否能够在映射过程中支持对目标的getList()。add()调用。

有两种方法可以解决您的问题。

方法1:启用字段匹配

modelMapper.getConfiguration()
    .setFieldAccessLevel(AccessLevel.PRIVATE)
    .setFieldMatchingEnabled(true);

方法2:

尝试使用wsimport生成setter代码。