BeanUtils用法

老早以前也用过spring的提供的这个BeanUtils工具类,但好久不用,就忘得差不多了,今天看到同事又用到了,就记录下来。这个工具类的主要用途是将两个同类型的两个实体的属性值进行copy。当然它里面还有别的方法,供我们使用。这里,用到它的主要场景是:同事在把一个DO实体从数据库查询出来,再新new一个实体,把所有的属性值设置成从DB中查询出来的实体(包括ID值),再对这个新实体进行保存,(实际上它想做的操作是把DB中查询出的实体对应的数据进行更新)结果就会直接报一个错:org.hibernate.NonUniqueObjectException:a different object with the same identifier value was already associated with the session:[com.xx.xx.xx.model.xxDO#18]

这个错的意思是说:在同一个会话中存在两个ID值相同的实体对象,而这是hibernate所不允许的,这时,就可以用到BeanUtils这个工具类,其用法就是:

UndoInfoDO undoInfo = new UndoInfoDO ();//新new的一个实体

UndoInfoDO undoInfoDO = undoList.get(0);//从DB中取得的数据返回的list集合中获得的DB实体对象
undoInfo.setDataState(undoInfoDO.getDataState());
undoInfo.setIsHidden(undoInfoDO.getIsHidden());
BeanUtils.copyProperties(undoInfo, undoInfoDO);//把undoInfo实体中,与undoInfoDO实体中属性值不一样的属性复制到undoInfoDO
undoInfoDAO.doSave(undoInfoDO);

这样就可以直接保存undoInfoDO实体。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值