zoukankan      html  css  js  c++  java
  • Hibernate自动执行更新方法

    问题场景:在执行查询时,没有对对象A调用save或者update操作,控制台显示却执行过一次update

    问题原因:在执行查询之前 对A中的某一个关联对象 one-one one-many 等 字段 进行过set操作,hibernate在每个session里都会做些处理,比如把查询过的对象缓存起来什么,这个时候这些对象的实例是和数据库保持关联的,hibernate会记录session生命周期内所有缓存对象的操作过程,最后都会反映到数据库去,也就是所谓的托管状态,所以才会有自动更新这种问题。只要每次都把查询到的对象用evict(或clear)清除(记得,是每次),那么就不会有托管状态的entity,也就不会有自动更新,但这不会影响(应该)update(或saveOrUpdate)操作,evict只是清楚实例与数据库的关联而已,不是清楚实例本身。

    解决方法:查询之前不操作关联对象,或者是每次都把查询到的对象用evict(或clear)清除(记得,是每次)

  • 相关阅读:
    性能相关记录
    邮箱SMTP
    IntelliJ IDEA 14.1.7 安装激活
    pychram永久激活
    电脑的奇葩坑
    jmeter过程中的坑
    各数据库驱动连接配置
    spring定时器--时间设置规则
    linux redhat7.2下vim的安装与使用方法
    分数化小数
  • 原文地址:https://www.cnblogs.com/ymqj520/p/11378388.html
Copyright © 2011-2022 走看看