Hibernate自动执行更新方法
程序员文章站
2022-07-01 14:01:47
问题场景:在执行查询时,没有对对象A调用save或者update操作,控制台显示却执行过一次update 问题原因:在执行查询之前 对A中的某一个关联对象 one-one one-many 等 字段 进行过set操作,hibernate在每个session里都会做些处理,比如把查询过的对象缓存起来什 ......
问题场景:在执行查询时,没有对对象a调用save或者update操作,控制台显示却执行过一次update
问题原因:在执行查询之前 对a中的某一个关联对象 one-one one-many 等 字段 进行过set操作,hibernate在每个session里都会做些处理,比如把查询过的对象缓存起来什么,这个时候这些对象的实例是和数据库保持关联的,hibernate会记录session生命周期内所有缓存对象的操作过程,最后都会反映到数据库去,也就是所谓的托管状态,所以才会有自动更新这种问题。只要每次都把查询到的对象用evict(或clear)清除(记得,是每次),那么就不会有托管状态的entity,也就不会有自动更新,但这不会影响(应该)update(或saveorupdate)操作,evict只是清楚实例与数据库的关联而已,不是清楚实例本身。
解决方法:查询之前不操作关联对象,或者是每次都把查询到的对象用evict(或clear)清除(记得,是每次)
推荐阅读
-
python实现dnspod自动更新dns解析的方法
-
解决Hibernate JPA中insert插入数据后自动执行select last_insert_id()
-
Win10自动更新如何处理?关闭Win10自动更新方法汇总
-
电脑新系列N卡驱动的自动更新的方法
-
vscode如何关闭自动更新提示?visual studio code禁止自动更新的方法介绍
-
mssql sqlserver 表增加列后,视图不会自动更新相关列的两种解决方法分享
-
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
-
Win10怎么禁止驱动程序更新?Win10禁止驱动自动更新的方法
-
Myeclipse中hibernate自动创建表的方法
-
dreamweaver自动更新链接的设置方法