探索flutter框架开发的app在移动应用市场的潜力与挑战
1221
2022-12-13
BeanUtils.copyProperties()拷贝id属性失败的原因及解决
目录BeanUtils.copyProperties()拷贝id属性失败部分代码如下解决方法BeanUtils.copyProperties 出错
BeanUtils.copyProperties()拷贝id属性失败
po类中id有值,但是使用BeanUtils.copyProperties()拷贝出的vo类id属性为null,检查后发现是因为po继承的父类声明了一个泛型。
部分代码如下
public abstract class AbstractEntity protected ID id; /**创建人*/ protected ID createdBy; /**创建时间*/ protected Date createdTime; /**最后一次修改人*/ protected ID lastModifiedBy; /**最后一次修改时间*/ protected Date lahttp://stModifiedTime; 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
protected ID id;
/**创建人*/
protected ID createdBy;
/**创建时间*/
protected Date createdTime;
/**最后一次修改人*/
protected ID lastModifiedBy;
/**最后一次修改时间*/
protected Date lahttp://stModifiedTime;
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
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~