BeanUtils.copyProperties 无法复制数据库生成的bean

如题,有两个数据库对象因为字段比较多,需要复制。

A a1 = new A();

a1.setName("this is name");

A a2 = new A();

BeanUtils.copyProperties(a2,a1);

由于使用generate类生成的A继承BaseA类,这样造成无法进行实体复制。

只有直接在A类底下的变量才能复制。这要如何处理呢?


评论区

JFinal

2017-10-23 10:53

BeanUtils 这个东东没有用过,不了解细节,没法帮到你

lyq027

2017-10-23 18:12

@JFinal 我主要是一个表是几十个字段,需要复制这个表的数据到另外一个表,字段是一样的,一个个用赋值,太麻烦。apache有出一个beanUtils的工具类,可以实现javabean复制。除了一个个赋值,还有什么简便方法吗?

cnzzr

2017-10-23 23:32

org.apache.commons.beanutils.BeanUtils
BeanUtils.copyProperties(person2,person); // 测试OK

lyq027

2017-10-25 13:40

@cnzzr 这个不行的,我用的就是这个呀

cnzzr

2017-10-26 12:07

@lyq027 用实际的IBean实体进行了测试,发现确实有异常 定位在实体的Date属性没有Converter实现。
提供以下下种思路:
1、PropertyUtils.copyProperties(person目标,person源);
2、将对象序列化为JSON后,再反序列化。

lyq027

2017-10-26 15:09

@cnzzr 我说的不是Date的问题,因为jfinal的model是继承关系,这样造成PropertyUtils.copyPropertie无法正常使用,如果没有继承关系,只有一层的普通的bean,PropertyUtils是可以使用的

cnzzr

2017-10-26 23:22

@lyq027
BeanUtils 和 PropertyUtils的实现是不再的
我测试用的JFinal3.2,实体也是生成,BeanUtils报错,PropertyUtils正常。

hb963724769

2019-04-11 17:41

后来呢,咋整了

lyq027

2019-07-12 22:45

@hb963724769 Task t = JSON.parseObject(JSON.toJSONString(task), Task.class);