BeanUtils用法
2015-11-08 23:26
281 查看
老早以前也用过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实体。
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实体。
相关文章推荐
- hibernate集合类型映射
- np.newaxis 为 numpy.ndarray(多维数组)增加一个轴
- 【FastDev4Android框架开发】BaseAdapterHelper的基本使用介绍,让你摆脱狂写一堆Adapter烦恼(二十四)
- window下从硬盘安装linux系统iso镜像文件的方法
- 用例图
- CMake入门和使用(下)
- c# 类;一维数组;二维数组
- LUA语言注意点归集
- 第三节:整型数据和实型数据
- Java反射(reflect)
- 【Oracle】ORACLE 12c DB In-Memory简述及启用
- Hbase基本操作~
- U盘安装ESXi5.5 加载的时候卡在Lonading lsi_mr3.v00不动的解决办法
- 硅谷之火何时才能引燃中国的OS
- I.MX6中PC连接开发板问题
- pwnable simple login
- 第七次作业——团队作业——项目冲刺———第八天
- Java网络编程
- IOS UISegmentedControl
- Java记录 -69- Comparable与Comparator的区别