【问题标题】:JAVA :: copy List object1 to list object2 where both the objects have same variablesJAVA :: 将 List object1 复制到 list object2,其中两个对象具有相同的变量
【发布时间】:2018-10-10 09:16:06
【问题描述】:

我正在尝试将带有 object1 的列表中的所有对象复制到带有 object2 的列表中:

以下是我的代码片段:

List<EmployeeAmManegmentModel> am = employee.amEmployeeDeatails();
List<EmployeeRmManegmentModel> rm = employee.rmEmployeeDeatails();  
List<EmployeeGenericModel> GM = new ArrayList<>();

我在这里尝试将amrm 复制到GM。所有 3 个模型都有相同的参数:

EmployeeAmManegmentModel:

@Entity
@Table(name = "PROFILE_AM")
public class EmployeeAmManegmentModel {
    @Id
    @GeneratedValue
    @Column(name = "AM_ID")
    private Long id;

    @Column(name = "NAME")
    private String name;

    @Column(name = "CONTACT_NUMBER")
    private Long contactNumber;

    @Column(name = "EMAIL_ID")
    private String emailId;

    @Column(name = "STATUS")
    private Long status;

    @Column(name = "EMPLOYEE_TYPE")
    public  String employeeType = "AM"; ..... getters and setters

EmployeeRrmManegmentModel

@Id
@GeneratedValue
@Column(name = "RM_ID")
private Long id;

@Column(name = "NAME")
private String name;

@Column(name = "CONTACT_NUMBER")
private Long contactNumber;

@Column(name = "EMAIL_ID")
private String emailId;

@Column(name = "STATUS")
private Long status;

@Column(name = "EMPLOYEE_TYPE")
public  String employeeType = "RM"; 

员工通用模型

private Long id;
private String name;
private Long contactNumber;
private String emailId;
private Long status;
private String employeeType;

有没有办法将结果从一个不同对象类型的列表复制到另一个?

提前致谢。

【问题讨论】:

    标签: java hibernate collections


    【解决方案1】:

    不完全确定这与 Hibernate 有什么关系。您有 Hibernate 实体,但将属性从一个类的对象复制到另一个类的对象不会影响 Hibernate。

    没有完全自动的方法可以做到这一点。但是,有一些库可以将不同类的对象相互映射。

    Dozer 是一个具有非常全面的映射功能的此类库。

    【讨论】:

      【解决方案2】:

      如果 EmployeeAMMenegement 和 EMplyeeRMManagement 模型是同一个类,还有更多方法,您可以使用从这两个类扩展 EmployeeGenericModel。

      但您可以通过从 AM 或 RM 类创建映射器来做到这一点。

      public class EmployeeAmManegmentModel {
        public EmployeeAmMenegementModel(EmployeeGenericModel egm){
          this.id = egm.id;
          this.name = egm.name;
          //dst
        }
      }
      

      谢谢

      【讨论】:

        【解决方案3】:

        如果我正确理解你的任务,你可以这样做:

            Gson gson = new Gson();
            List<EmployeeGenericModel> GM = am.stream()
                            .map(x -> gson.fromJson(gson.toJson(x), EmployeeGenericModel.class))
                            .collect(Collectors.toList());
        
            GM.addAll(rm.stream()
                            .map(x -> gson.fromJson(gson.toJson(x), EmployeeGenericModel.class))
                            .collect(Collectors.toList());
        

        【讨论】:

          【解决方案4】:

          Java中有两个BeanUtils.copyProperties(parameter1, parameter2)。

          一个是
          org.apache.commons.beanutils.BeanUtils.copyProperties(Object dest, Object orig)

          另一个是
          org.springframework.beans.BeanUtils.copyProperties(对象源,对象目标)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-01-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-14
            • 2019-04-15
            • 1970-01-01
            • 2013-11-13
            相关资源
            最近更新 更多