Скопируйте свойства из исходного в целевой класс с помощью метода beanutils.properties - PullRequest
0 голосов
/ 20 июня 2019

У меня есть исходный класс Entity с некоторыми параметрами и целевой класс Dto. Теперь у класса Entity есть параметры какого-то другого класса, но в классе dto я использую эти параметры напрямую, а не ссылку на другой класс в dto.

Проблема в том, что при выполнении BeanUtils.copyProperties(source,target) эти свойства, имеющие ссылку на другой класс, не получают копии в класс dto.

Класс сущности:

Public class Entity{
   private A a;
   private String add;
}
Public class A{
  private String name;
}
Dto class :
public class Dto{
  private String add;
  private String name;     // here instead of class A i directly took the param of class A as per requirement.
}

Как мне сделать BeanUtils.copyProperties(Entity,Dto);, чтобы скопировать все свойства.

Класс сущности содержит параметры из другого класса сущности, но dto не содержит ссылку на другой класс, вместо этого непосредственно имея другие параметры класса.

1 Ответ

0 голосов
/ 21 июня 2019

Spring имеет концепцию конвертеров, которые используются автоматически, когда он должен конвертировать между классами. BeanUtils.copyProperties, похоже, не использует его, но с помощью BeanWrapper должно быть сложно написать альтернативу, которая перебирает свойства и пытается использовать конвертеры (в данном случае конвертер из A в строку) для копирования свойств.

В качестве альтернативы существуют другие библиотеки, которые могут выполнять аналогичные задачи: Dozer , ModelMapper , MapStruct , просто назвать несколько без каких-либо предпочтений.

...