背景 & 问题:
公司项目用的是hibernate不是mybatis,历史代码在用数据库实体类(映射的第一张表)查出来之后,对实体类对象进行了修改,后续就继续去查询另外一张表了。结果,第一张表的数据竟然变化了,控制台也打印出了update语句,震惊我一万年!!!。

Hibernate: update `bit_order` set `AppId`=?, `BackOrder`=?, `BackOrderDate`=?, `Combinability`=? where xx = ?

原因:
遇事不决问豆包。
直接将问题描述清楚交给豆包,问问啥情况。
原来hibernate有个自动脏检查机制。学到了,学到了。[奸笑]

解决方案:
不要直接修改从数据库查询用到的实体对象。可以深拷贝一份。
展开
柯苏远于2025-06-11 00:54发布的图片
评论