JAVA :: copy Список объектов1 в список объектов2, где оба объекта имеют одинаковые переменные - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь скопировать все объекты в Списке с object1 в список с object2:

Ниже приведен фрагмент кода:

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

Здесь я пытаюсь скопировать am и rm до 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

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 голосов
/ 25 июля 2019

В Java есть два свойства BeanUtils.copyProperties (параметр1, параметр2).

Один из них -
org.apache.commons.beanutils.BeanUtils.copyProperties (Объект dest, Объект orig)

Другим является
org.springframework.beans.BeanUtils.copyProperties (Источник объекта, Цель объекта)

0 голосов
/ 10 октября 2018

Если модели EmployeeAMMenegement и EMplyeeRMManagement являются одним и тем же классом с несколькими другими методами, вы можете использовать расширение EmployeeGenericModel для обоих классов.

Но вы можете сделать это, создав сопоставление из AM или класса RM.

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

Спасибо

0 голосов
/ 10 октября 2018

Если я правильно понял вашу задачу, вы могли бы сделать что-то вроде:

    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());
0 голосов
/ 10 октября 2018

Не совсем уверен, как это связано с Hibernate.У вас есть Hibernate Entities, но копирование атрибутов из объекта одного класса в объект другого класса не влияет на Hibernate.

Не существует полностью автоматического способа сделать это.Однако есть библиотеки для отображения объектов разных классов друг на друга.

Одна из таких библиотек с очень широкими возможностями для отображения - Dozer .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...