JAVA ::将列表对象1复制到两个对象都具有相同变量的列表对象2

时间:2018-10-10 09:16:07

标签: java hibernate collections

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

下面是我的代码片段:

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

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

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

EmployeeRmManegmentModel

@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"; 

EmployeeGenericModel

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

是否可以将结果从不同对象类型的一个列表复制到另一列表?

谢谢。

4 个答案:

答案 0 :(得分:1)

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

没有完全自动的方法来执行此操作。但是,存在用于将不同类的对象相互映射的库。

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

答案 1 :(得分:0)

如果EmployeeAMMenegement和EMplyeeRMManagement模型是同一类,并且具有其他几种方法,则可以从这两个类中使用extended EmployeeGenericModel。

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

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

谢谢

答案 2 :(得分:0)

如果我正确理解了您的任务,则可以执行以下操作:

    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());

答案 3 :(得分:0)

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

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

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