背景 & 问题:
公司项目用的是hibernate不是mybatis,历史代码在用数据库实体类(映射的第一张表)查出来之后,对实体类对象进行了修改,后续就继续去查询另外一张表了。结果,第一张表的数据竟然变化了,控制台也打印出了update语句,震惊我一万年!!!。
Hibernate: update `bit_order` set `AppId`=?, `BackOrder`=?, `BackOrderDate`=?, `Combinability`=? where xx = ?
原因:
遇事不决问豆包。
直接将问题描述清楚交给豆包,问问啥情况。
原来hibernate有个自动脏检查机制。学到了,学到了。![[奸笑]](//lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_17.bcebf79.png)
解决方案:
不要直接修改从数据库查询用到的实体对象。可以深拷贝一份。
公司项目用的是hibernate不是mybatis,历史代码在用数据库实体类(映射的第一张表)查出来之后,对实体类对象进行了修改,后续就继续去查询另外一张表了。结果,第一张表的数据竟然变化了,控制台也打印出了update语句,震惊我一万年!!!。
Hibernate: update `bit_order` set `AppId`=?, `BackOrder`=?, `BackOrderDate`=?, `Combinability`=? where xx = ?
原因:
遇事不决问豆包。
直接将问题描述清楚交给豆包,问问啥情况。
原来hibernate有个自动脏检查机制。学到了,学到了。
![[奸笑]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_17.bcebf79.png)
解决方案:
不要直接修改从数据库查询用到的实体对象。可以深拷贝一份。
展开
评论
点赞