【问题标题】:How to update object fields from another object using Modelmapper如何使用 Modelmapper 从另一个对象更新对象字段
【发布时间】:2018-03-07 13:26:12
【问题描述】:

我打算编写一个方法,用于更新 MyObject 对象,其中包含另一个 MyObject 对象的非空字段。

private void updateMyObject(MyObject sourceObject, MyObject destinationObject) {
    ModelMapper mapper = new ModelMapper();
    mapper.getConfiguration().setPropertyCondition(Conditions.isNotNull());
    mapper.map(sourceObject, destinationObject);
}

public class MyObject {
    long id;

    long durationInMilliSecounds;

    //...getters and setters 
}

这里destinationObject 没有更新。任何人都可以提出这个代码的问题。

【问题讨论】:

    标签: java object copy deep-copy modelmapper


    【解决方案1】:

    您似乎遗漏了一些代码。也许错误在于该代码。我猜你的模型没有 getter 和 setter,这是 ModelMapper 所需要的。

    以下代码按预期工作:

    public class modelMapperTest {
        public static void main(String[] args) {
        ModelMapper mapper = new ModelMapper();
        mapper.getConfiguration().setPropertyCondition(Conditions.isNotNull());
    
        MyModel sor = new MyModel(null, 5);
        MyModel des = new MyModel("yyy", 0);        
    
        System.out.println(des);
        mapper.map(sor, des);
        System.out.println(des);
    }
    

    public class MyModel {
        private String s;
        private int i;
    
    public String getS() {
        return s;
    }
    
    public void setS(String s) {
        this.s = s;
    }
    
    public int getI() {
        return i;
    }
    
    public void setI(int i) {
        this.i = i;
    }
    
    public MyModel(String s, int i) {
        super();
        this.s = s;
        this.i = i;
    }
    
    @Override
    public String toString() {
        return "MyModel [s=" + s + ", i=" + i + "]";
    }
    
    }
    

    打印:

    MyModel [s=yyy, i=0]

    MyModel [s=yyy, i=5]

    【讨论】:

    • MyObject 类有 getter 和 setter。我已经用这些信息更新了问题
    • 我没有看到更新。我正在使用版本。你是1.1.0吗?请显示其余的代码和配置。
    • 我知道这是旧的,但你知道为什么如果我的一个对象有另一个对象,它有一个字符串列表作为这个 [A, B, C] 的字段,如果我尝试合并它另一个值为 [A, C] 我得到 [A, C, C] 当我应该得到 [A, C]
    【解决方案2】:

    我之前使用过ModelMapper 版本0.6.5 并将其升级到1.1.0 问题已修复

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 2020-05-20
      • 1970-01-01
      • 2012-09-14
      相关资源
      最近更新 更多