BeanUtils.copyProperties()拷貝id屬性失敗的原因及解決
BeanUtils.copyProperties()拷貝id屬性失敗
po類中id有值,但是使用BeanUtils.copyProperties()拷貝出的vo類id屬性為null,檢查后發(fā)現(xiàn)是因?yàn)閜o繼承的父類聲明了一個(gè)泛型。
部分代碼如下
public abstract class AbstractEntity<ID extends Serializable> implements Serializable {
protected ID id;
/**創(chuàng)建人*/
protected ID createdBy;
/**創(chuàng)建時(shí)間*/
protected Date createdTime;
/**最后一次修改人*/
protected ID lastModifiedBy;
/**最后一次修改時(shí)間*/
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()))
當(dāng)執(zhí)行到獲取vo類的writeMethod即setId()參數(shù)類型,結(jié)果是Long類型,而po類的readMethod即getId()返回值類型獲取到的結(jié)果卻是Serializable所以BeanUtils認(rèn)為屬性類型不同,所以不會(huì)拷貝id屬性。
解決方法
暫不清楚po類extends AbstractEntity<Long>后為什么讀取到的類型不是Long而是父類型Serializable,暫時(shí)先不用泛型,把id類型直接定義為L(zhǎng)ong,問(wèn)題解決~
BeanUtils.copyProperties 出錯(cuò)
注意:屬性復(fù)制,不同jar中的方法,用法不一樣!
Spring 包(org.springframework.beans)中
BeanUtils.copyProperties(A,B);
是A中的值賦值給B
Apache 包(org.apache.commons.beanutils)中(常用)
BeanUtils.copyProperties(A,B);
是B中的值賦值給A
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- BeanUtils.copyProperties()所有的空值不復(fù)制問(wèn)題
- 詳解BeanUtils.copyProperties()方法如何使用
- BeanUtils.copyProperties()參數(shù)的賦值順序說(shuō)明
- 基于Beanutils.copyProperties()的用法及重寫(xiě)提高效率
- 關(guān)于兩個(gè)BeanUtils.copyProperties()的用法及區(qū)別
- BeanUtils.copyProperties()屬性名相同但是類型不同問(wèn)題
- Java中BeanUtils.copyProperties()詳解及應(yīng)用場(chǎng)景
相關(guān)文章
Java IO文件編碼轉(zhuǎn)換實(shí)現(xiàn)代碼
這篇文章主要介紹了Java IO文件編碼轉(zhuǎn)換實(shí)現(xiàn)代碼,有需要的朋友可以參考一下2013-12-12
MyBatis-Plus updateById不更新null值的方法解決
用Mybatis-Plus的updateById()來(lái)更新數(shù)據(jù)時(shí),無(wú)法將字段設(shè)置為null值,更新后數(shù)據(jù)還是原來(lái)的值,本文就來(lái)詳細(xì)的介紹一下解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
Java下載遠(yuǎn)程服務(wù)器文件到本地(基于http協(xié)議和ssh2協(xié)議)
這篇文章主要介紹了Java下載遠(yuǎn)程服務(wù)器文件到本地的方法(基于http協(xié)議和ssh2協(xié)議),幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2021-01-01
Spring?MVC如何實(shí)現(xiàn)接口Controller定義控制器
這篇文章主要介紹了Spring?MVC如何實(shí)現(xiàn)接口Controller定義控制器,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Maven本地倉(cāng)庫(kù)的配置以及修改默認(rèn).m2倉(cāng)庫(kù)位置
今天小編就為大家分享一篇關(guān)于Maven本地倉(cāng)庫(kù)的配置以及修改默認(rèn).m2倉(cāng)庫(kù)位置的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
SpringBoot實(shí)現(xiàn)自定義配置文件提示的方法
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)自定義配置文件提示的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03

