问题

Hibernate 与数据库中的触发器协同工作时, 会造成两类问题
1. 触发器使 Session 的缓存中的持久化对象与数据库中对应的数据不一致:触发器运行在数据库中, 它执行的操作对 Session 是透明的
2. Session 的 update() 方法盲目地激发触发器: 无论游离对象的属性是否发生变化, 都会执行 update 语句, 而 update 语句会激发数据库中相应的触发器

解决办法

  1. 在执行完 Session 的相关操作后, 立即调用 Session 的 flush() 和 refresh() 方法, 迫使 Session 的缓存与数据库同步(refresh() 方法重新从数据库中加载对象)
  2. 在映射文件的的 元素中设置 select-before-update 属性: 当 Session 的 update 或 saveOrUpdate() 方法更新一个游离对象时, 会先执行 Select 语句, 获得当前游离对象在数据库中的最新数据, 只有在不一致的情况下才会执行 update 语句

Hibernate 与触发器协同工作相关推荐

  1. Hibernate复习之Hibernate基本介绍

    众所周知.眼下流行的面向对象的对象关系映射的Java持久层框架有MyBatis和Hibernate.他们都是对象关系映射ORM. 解决的主要问题就是对象-关系的映射.域模型和关系模型都分别建立在概念模 ...

  2. Hibernate 注解学习

    /** * @author liuguangyi * @content ejb3注解的API定义在javax.persistence.*包里面. * * 注释说明: * @Entity -- 将一个类 ...

  3. hibernate主键详细介绍

    hibernate主键详细介绍 /** * * @author liuguangyi * @content ejb3注解的API定义在javax.persistence.*包里面. * * 注释说明: ...

  4. Hibernate各种主键生成策略与配置详解 - 真的很详细啊!!

    1.assigned 主键由外部程序负责生成,在 save() 之前必须指定一个.Hibernate不负责维护主键生成.与Hibernate和底层数据库都无关,可以跨数据库.在存储对象前,必须要使用主 ...

  5. 基于按annotation的hibernate主键生成策略

    这里讨论代理主键,业务主键(比如说复合键等)这里不讨论. 一.JPA通用策略生成器 通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id ...

  6. oracle 存储过程 ,触发器练习

    /* 以下代码是对emp表进行显示宽度设置 */ col empno for 9999; col ename for a10; col job for a10; col mgr for 9999; c ...

  7. 发生了变化 触发器函数不能读它_2013年1月18日调试触发器“表发生了变化,触发器或函数不能读它”的出现原因,以及解决方案...

    1.异常出现的场景. :在使用Hibernate做为项目持久层的情况下,需要对某一张表进行一个扩展,扩展操作便是在该表上创建一个触发器.将表中的数据读入到其他表中. SQL语句如下: drop tab ...

  8. java hibernate sqlserver自增_怎样在hibernate中实现oracle的主键自增策略?

    Oracle数据库索引和SQLServer的阐述 Oracle常见表结构 oracle数据库约束条件删除.取消.启用 在很多情况下,我们使用Hibernate在已经建立好数据库的基础上.在oracle ...

  9. 2013年1月18日调试触发器“表发生了变化,触发器或函数不能读它”的出现原因,以及解决方案...

    1.异常出现的场景. :在使用Hibernate做为项目持久层的情况下,需要对某一张表进行一个扩展,扩展操作便是在该表上创建一个触发器.将表中的数据读入到其他表中. SQL语句如下: drop tab ...

  10. Hibernate第一次课(2)---Hibernate原理简介

    学员要求:熟悉Java.SQL.JDBC,掌握面向对象的开发方法,并有实际的项目开发经验. 培训目标:让学员了解O/R Mapping原理,掌握Hibernate开发的相关知识,并能使用Hiberna ...

最新文章

  1. 异常检测——局部异常因子(Local Outlier Factor ,LOF)算法
  2. python运行速度和电脑配置有关系吗-学python最电脑配置有要求么
  3. C# 正则表达式过滤危险HTML
  4. 原码、补码、反码、1的补码
  5. 关于 SAP Spartacus feature library 里的 _index.scss 文件,和神奇的下划线省略行为
  6. Linux进阶之路————scp指令介绍与演示
  7. 《C#高效编程》读书笔记11-理解短小方法的优势
  8. 拓端tecdat|R语言向量自回归VAR的迭代多元预测估计 GDP 增长率时间序列
  9. Android 多媒体开发学习之简单的音乐播放器
  10. 安卓微软数学(算数,积分,极限,代数)数学神器
  11. C盘清理攻略--拯救你的C盘空间
  12. 巨潮网怎么下载年报_如何下载上市公司财务报表?
  13. php 新浪微博模拟登陆,python模拟新浪微博登陆功能(新浪微博爬虫)
  14. 10月集训test3
  15. Vue+Element表格动态列+表格分页
  16. 设计一个程序,帮助小学生练习10以内的加法题目
  17. 【零散技术】微信小程数组排序
  18. 醋在生活中的83种妙用
  19. vue: Invalid prop: type check failed for prop “action“. Expected String with valu
  20. OpenCV-python 模板匹配-分水岭-GrabCut

热门文章

  1. rk3399_android7.1关于secureboot操作说明
  2. 【编程语言】Kotlin之object关键字
  3. POJ 1470 Closest Common Ancestors(最近公共祖先 LCA)
  4. JDK_Proxy_InvocationHandler_动态代理
  5. 卖两本windows phone的书
  6. ASP.NET-关于Container dataitem 与 eval方法介绍(转帖)
  7. 计算机网络物理层之物理层之下的传输媒体
  8. Security+ 学习笔记24 数据中心防护
  9. puppet详解(九)——puppet项目实战
  10. Tomcat详解(十一)——Tomcat管理