BeanUtils.copyProperties()拷贝id属性失败的原因及解决
目录
- BeanUtils.copyProperties()拷贝id属性失败
- 部分代码如下
- 解决方法
- BeanUtils.copyProperties 出错
BeanUtils.copyProperties()拷贝id属性失败 po类中id有值,但是使用BeanUtils.copyProperties()拷贝出的vo类id属性为null,检查后发现是因为po继承的父类声明了一个泛型。
部分代码如下
public abstract class AbstractEntityimplements Serializable { protected ID id; /**创建人*/protected ID createdBy; /**创建时间*/protected Date createdTime; /**最后一次修改人*/protected ID lastModifiedBy; /**最后一次修改时间*/protected Date lastModifiedTime; public void setId(ID id) {this.id = id; } public ID getId() {return this.id; }
查看BeanUtils.copyProperties()源码中有一段判断如下:
if (readMethod != null && ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType()))
当执行到获取vo类的writeMethod即setId()参数类型,结果是Long类型,而po类的readMethod即getId()返回值类型获取到的结果却是Serializable所以BeanUtils认为属性类型不同,所以不会拷贝id属性。
解决方法
暂不清楚po类extends AbstractEntity
BeanUtils.copyProperties 出错 注意:属性复制,不同jar中的方法,用法不一样!
Spring 包(org.springframework.beans)中
BeanUtils.copyProperties(A,B);
是A中的值赋值给B
Apache 包(org.apache.commons.beanutils)中(常用)
BeanUtils.copyProperties(A,B);
是B中的值赋值给A
【BeanUtils.copyProperties()拷贝id属性失败的原因及解决】以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- 第6.2章(设置属性)
- 7、前端--jQuery简介、基本选择器、基本筛选器、属性选择器、表单选择器、筛选器方法、节点操作、绑定事件
- 缓存有关的配置和属性
- 狗趣
- Spring源码解析_属性赋值
- HTML5新增选择器属性方法
- Arcgis根据经纬度批量提取属性值
- SpringBoot|SpringBoot 属性配置中获取值的方式
- minifilter中获取对文件修改属性的操作
- 在Objective-C的Category中使用属性的懒加载