Hibernate中的merge方法 以及对象的几中状态
来源:互联网 发布:淘宝订单改地址 编辑:程序博客网 时间:2024/06/05 18:08
Hibernate中有一个常见的错误:
A different object with the same identifier value was already associated with the session
在一个session中存在两个不同的实体却有着相同的身份标签(主键)是会报错的,想要避免这种错误可以使用Hibernate中的merge方法。
merge方法的作用:
- new一个对象并设置ID时,这个对象会被当作游离态处理,在使用merge时,如果在数据库中不能能找到这条记录,则使用insert将数据插入;如果在数据库中找到这条记录,则使用update将数据更新。
- new一个对象没有设置ID时,这个对象会被当作瞬态处理,在使用merge时会根据实体类的主键生成策略保存这条数据。
- 使用merge存储到数据库的对象,其本身不会转变为持久态对象。
HIbernate中对象的三态的补充:
- 瞬态:通过Java关键字new的实体类对象,不和Session实例关联并且在数据库中没有和瞬态对象关联的记录,此时的对象还没有纳入Hibernate的缓存管理中。
- 持久态: 已经被保存进数据库的实体对象,还存于Hibernate的缓存管理之中。
- 游离态(脱管态):持久态对象脱离了Hibernate的缓存管理后就会变成游离态,游离态对象与瞬态对象的最大区别在于,游离态对象在数据库中可能存在一条与之对应的记录,而瞬态对象则不会在数据库中存在与之对应的记录,简而言之就是游离态对象比瞬态对象多了一个ID属性。
阅读全文
0 0
- Hibernate中的merge方法 以及对象的几中状态
- Hibernate中对象的三种状态以及Session类中saveOrUpdate方法与merge方法的区别
- hibernate中PO对象的三种状态分析以及session中的一些方法的区别
- hibernate中对象的几种状态
- Hibernate对象的三种状态区别以及save等几种方法的区别
- Hibernate中对象的三种状态,以及三种状态间的转化方法
- 【学习笔记】Hibernate中对象的状态和转换以及Session的主要方法总结
- 在hibernate中对象的几种状态
- Hibernate中处于detached状态的Entity对象融合(merge)得到另一个persistent状态的Entity对象
- Hibernate 对象的几种状态
- Hibernate中对象的状态
- hibernate中对象的状态
- Hibernate中对象的状态
- Hibernate 对象三种状态 瞬时态,持久态,脱管态 以及 save update saveOrUpdate merge等的使用
- Hibernate之Session对象的相关方法以及持久化对象的状态
- hibernate中的对象状态
- Hibernate中的对象状态
- Hibernate中的对象状态
- 一些常用PHP语句,适用在ThinkPHP5上(1)
- arm 堆栈
- Android SpannableString---打造带样式的textview
- Spring Boot 事务的使用
- erlang中的错误处理
- Hibernate中的merge方法 以及对象的几中状态
- CSS Modules 用法教程
- JDBC--获得ResultSet的记录个数、字段个数(转载)
- Java并发编程75道面试题及答案——稳了
- LabVIEW串口通讯—通信协议
- 百度搜索下拉框效果(键盘操作)只完成部分功能,仅供参考
- Python中 sys.argv[]的用法简明解释
- 如何将idea项目上传到Git
- git常用命令备忘