Hibernate学习笔记 - Session.evict(user)方法
来源:互联网 发布:数据字段进行etl拆分 编辑:程序博客网 时间:2024/05/18 06:25
作用:从session缓存(EntityEntries属性)中逐出该对象,但是与commit同时使用,会抛出异常 !
Java代码
session = HibernateUtils.getSession(); tx = session.beginTransaction(); User1 user = new User1(); user.setName("李四"); user.setPassword("123"); user.setCreateTime(new Date()); user.setExpireTime(new Date()); //利用Hibernate将实体类对象保存到数据库中 //因为user主键生成策略采用的是uuid,所以调用完成save后,只是将user纳入session的管理 //不会发出insert语句,但是id已经生成,session中的existsInDatabase状态为false session.save(user); session.evict(user);//从session缓存(EntityEntries属性)中逐出该对象 //无法成功提交,因为hibernate在清理缓存时,在session的临时集合(insertions)中取出user对象进行insert操作后需要更新entityEntries属性中的existsInDatabase为true,而我们采用evict已经将user从session中逐出了,所以找不到相关数据,无法更新,抛出异常。 tx.commit();
解决在逐出session缓存中的对象不抛出异常的方法:
在session.evict()之前进行显示的调用session.flush()方法就可以了。
/利用Hibernate将实体类对象保存到数据库中 //因为user主键生成策略采用的是uuid,所以调用完成save后,只是将user纳入session的管理 //不会发出insert语句,但是id已经生成,session中的existsInDatabase状态为false session.save(user); //flush后hibernate会清理缓存,会将user对象保存到数据库中,将session中的insertions中的user对象清除,并且会设置session中的existsInDatabase状态为false session.flush(); session.evict(user);//从session缓存(EntityEntries属性)中逐出该对象 //可以成功提交,因为hibernate在清理缓存时,在Session的insertions中集合中无法找到user对象所以不会发出insert语句,也不会更新session中existsInDatabase的状态。 tx.commit();
0 0
- Hibernate学习笔记 - Session.evict(user)方法
- Hibernate学习--- Session.evict()方法
- hibernate session中clear、evict、flush方法的区别
- Hibernate Session中flush、clear、evict方法的区别
- Hibernate中session的clear(),flush(),evict()方法详解
- Hibernate中session的clear(),flush(),evict()方法详解
- Hibernate中session的clear(),flush(),evict()方法详解
- org.hibernate.Session.evict(Object object)方法的使用
- Hibernate Session 方法学习笔记
- Hibernate学习笔记----session核心方法
- Hibernate 中session.evict(obj):possible nonthreadsafe access to session
- jpa如何使用hibernate的evict()方法
- Hibernate的clear(),flush(),evict()方法详解
- Hibernate的clear(),flush(),evict()方法详解
- Hibernate的clear(),flush(),evict()方法详解
- Hibernate的clear(),flush(),evict()方法详解
- Hibernate的clear(),flush(),evict()方法详解
- Hibernate的clear(),flush(),evict()方法详解
- 安卓框架设置
- SIM9001GSM模块教程
- x264_scan8 的理解
- 解读思科2014-19年全球移动互联网发展趋势报告(1)
- Java面试题之==和equals的区别
- Hibernate学习笔记 - Session.evict(user)方法
- 5.3.3 局部变量的初始化和内存中的运行机制
- Android官方提供的两种viewpager滑动动画
- Enum 权举最好放在类以外
- HTML5之视频功能
- 运行STASM所需要的Visual Studio 2010和OpenCV的配置方法
- 兴趣网站
- 开发社交应用的利器——Ejabberd 一瞥
- centos7防火墙导致java程序访问mongodb3.0.1时报错的问题