为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开心每一天1111 2021-08-04 17:51:52
我正在使用 ModelMapper 将 JPA 实体映射到 DTO。我在实体上有集合 dto 是由 wsimport 从 wsdl 文件生成的,但不会生成集合的设置器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()}我使用一个简单的 MapperUtils 来映射实体和 dtopublic class MapperUtils {    private static ModelMapper modelMapper = new ModelMapper();    static {        modelMapper = new ModelMapper();        modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.LOOSE);    }    private MapperUtils() {    }    public static <D, T> D map(final T entity, Class<D> outClass) {        return modelMapper.map(entity, outClass);    }    public static <D, T> List<D> mapAll(final Collection<T> entityList, Class<D> outCLass) {        return entityList.stream().map(entity -> map(entity, outCLass)).collect(Collectors.toList());    }    public static <S, D> D map(final S source, D destination) {        modelMapper.map(source, destination);        return destination;    }}那么如果Entity.XXXX是一个Collection,如何使用ModelMapper来使用DTO.getXXXX.add()呢?
查看完整描述

1 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

我不知道 ModelMapper 是否能够在映射期间支持通过目的地调用 getList().add() 。


这里有 2 个方法可以解决您的问题。


方法一:启用字段匹配


modelMapper.getConfiguration()

    .setFieldAccessLevel(AccessLevel.PRIVATE)

    .setFieldMatchingEnabled(true);

方法二:


尝试使用 wsimport 生成 setter 代码。


查看完整回答
反对 回复 2021-08-04
  • 1 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信