将POJO内容从一个bean复制到另一个bean

dan*_*nik 9 java apache-commons

我在不同的包中有很少的Pojos,每个POJO包含来自同一个包的另一个pojo的集合.我需要将Package B Pojos中具有相同名称的所有项目复制到Package A中的对象.

Eaxmple:

package com.vanilla.packageA;

public class Student{

    private String firstName;
    private String lastName;
    private Set<Course> course;

    //getters and setters ommited

}   
Run Code Online (Sandbox Code Playgroud)
package com.vanilla.packageA;

    public class Course{
    private String courseName;
    private String courseDescription;

    //seters and getters
}
Run Code Online (Sandbox Code Playgroud)
package com.vanilla.packageB;

public class Student{

    private String firstName;
    private String lastName;
    private Address address;
    private Set<Course> course;
    Private Date birtday;

    //getters and setters ommited

}   
Run Code Online (Sandbox Code Playgroud)
package com.vanilla.packageB;

public class Course{
    private String courseName;
    private String courseDescription;
    private <Lecturer> lecturer;
    private Integer hours;

    //seters and getters
} 
Run Code Online (Sandbox Code Playgroud)

我想递归地将所有项从PackageB类复制到packageA存在于的类PaCkageB并共享相同的名称.

更新:

伙计们,我知道这是一个愚蠢的问题,但我需要维护这段代码,现在代码的编写方式是他们必须调用50个getter和setter,或者用50个参数调用构造函数.不幸的是,我不能使用相同的对象,我需要复制它,但我必须找到更多"优雅"的方式来复制tese bean.

Ros*_*sim 15

Apache BeanUtils.copyProperties不起作用的原因是什么?

  • 但是BeanUtils不会做深层复制.所以嵌套的bean等不起作用(奇怪). (4认同)

小智 5

嗯.. 推土机可能就是您想要的东西。

。。。它是一个对象到对象映射框架。这个想法是:

  • 通常它将按照惯例进行映射。
  • 您可以使用映射文件覆盖此约定。

。。因此,映射文件应尽可能紧凑。它在许多情况下很有用,例如将用例指定服务有效负载映射到可重用的核心模型对象上。

在提供SpringSource培训课程时,我们经常指出该框架。


Fee*_*ood 5

请参阅mapstruct。该工具生成代码,因此没有反射开销。