`

诡异的Session.merge()

阅读更多
还是Hibernate……

有两个实体类:A和B,双向多对多映射。属主类是A。

当向A的一个对象a添加——到B对象的若干实例的映射,并用Session.merge(a)持久化时,一切正常。

而向B的一个对象b添加——到A对象的若干实例的映射,并用Session.merge(b)持久化时,却没有任何反应。

两段代码几乎完全一样,效果却不同。于是想到了是不是Session.merge()带有数据完整性检查。于是在Session.merge(b)之后,又遍历了与b映射的所有A的实例并持久化。结果……可耻的失败了……映射关系仍然没得到保存。

静下心来仔细想了想,难道说在Session.merge(b)之后,Transaction.commit()之前,Hibernate就已经对数据库进行了完整性检查?因为属主类里的数据没变,所以Session.merge(b)的时候就把更新的映射关系当成废品抛弃了??

继续试验,把遍历操作放到Session.merge(b)之前。惊奇的发现,竟然保存上了。

无语啊……还好映射关系不多。要是多的话……遍历操作……岂不败了……诡异的Session.merge()……
分享到:
评论

相关推荐

    session中merge和update的区别

    Hibernate中session的merge以及update方法

    test-hibernate:了解一级缓存的工作原理

    示例 4a - 使用session.merge(..)更新非 Hibernate 托管实体。 示例 5 - 删除会话中已存在具有相同标识符的实体的非 Hibernate 受管实体。 示例 5a - 在删除非 Hibernate 受管实体之前首先使用session.merge(..) 。...

    Hibernate中的merge使用详情解说

    Hibernate中的merge使用详情解说

    Hibernate的Session的javadoc

    我身边的朋友经常会分不清save、saveOrUpdate、update的区别,lock、merge、replicate、refresh、evict甚至不知道是干什么用的。而且关于实体对象的生命周期也有很多概念不清,分不清transient、persistent、...

    EJB3.0 实例教程 -- 切片2

    6.5.3 更新 Merge() .........44 6.5.4 删除 Remove() .......44 6.5.5 执行 EJB3 QL操作createQuery() 44 6.6 关系/对象映射.45 6.6.1 映射的表名或列名与数据库保留字同名时的处理...........45 Jboss EJB3.0实例...

    EJB3.0实例教程

    4.3 STATELESS SESSION BEAN与STATEFUL SESSION BEAN的区别...............................................................................22 4.4 如何改变SESSION BEAN的JNDI 名称...............................

    EJB3.0 实例教程 -- 切片1

    6.5.3 更新 Merge() .........44 6.5.4 删除 Remove() .......44 6.5.5 执行 EJB3 QL操作createQuery() 44 6.6 关系/对象映射.45 6.6.1 映射的表名或列名与数据库保留字同名时的处理...........45 Jboss EJB3.0实例...

    RunAsTI-master.zip

    There are reports that the tool does not work over an RDP session. The tool is actually a merge of 2 previous tools; RunAsSystem and RunFromToken. The curious ones might notice that RunFromToken is...

    Deep-Learning-for-Computer-Vision:Packt的《计算机视觉深度学习》

    计算机视觉的深度学习 Packt的《用于计算机视觉的深度学习》的代码存储库 这是发布的“ 的代码库。 它包含从头到尾完成本书所必需的所有支持...train_summary_writer = tf.summary.FileWriter('/tmp/train' , session.g

    tensorboard实现同时显示训练曲线和测试曲线

    在做网络训练实验时,有时需要同时将训练曲线和测试曲线一起显示,便于观察网络训练效果。经过很多次踩坑后,终于解决了。...megred = tf.summary.merge_all() with tf.Session() as sess: writer_tra

    tensorboard 可以显示graph,却不能显示scalar的解决方式

    今天照着样例搞了下tensorboard,...summary_op=tf.summary.merge_all() 原位置如下: 我把summary_op给放再with tf.Session() 下了。这样子做是没有效果了,summary_op相当于没有被赋值。所以导致我没有获得我想要保

    5-3tensorboard 网络运行

    merged=tf.summary.merge_all() #建立会话 with tf.Session() as sess: sess.run(init) writer=tf.summary.FileWriter('logs/',sess.graph) #设置循环次数 for epoch in range(51): for batch in range(n_batch)...

    Git常见的报错

    第一种: ...解决方法: 在C:/Users/DELL/.ssh/中新建一个config文件 并写入: 重新执行 $ git push -u origin master: 这个方法是从国外一个人的博客中找的,具体原理是什么我还不太清楚,但是觉得似乎有一点点...

    P2P视频技术源码(VC)

    4) head: Session的头, head[0]为第一个Session, head[max-1]为最后一个session 5) init: 这一服务中每个Session需要执行的初始化操作. (函数指针) 6) process: 这一服务中消息的处理函数 7) closure: 这一服务中...

    P2P视频播放器 详细制作实例

    4) head: Session的头, head[0]为第一个Session, head[max-1]为最后一个session 5) init: 这一服务中每个Session需要执行的初始化操作. (函数指针) 6) process: 这一服务中消息的处理函数 7) closure: 这一服务中...

    微软内部资料-SQL性能优化5

    Contents Overview 1 Lesson 1: Index Concepts 3 Lesson 2: Concepts – Statistics 29 Lesson 3: Concepts – Query Optimization 37 Lesson 4: Information Collection and Analysis 61 Lesson 5: Formulating ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     8.4.5 Session的merge()方法  8.4.6 Session的delete()方法  8.4.7 Session的replicate()方法  8.5 级联操纵对象图  8.5.1 级联保存临时对象  8.5.2 更新持久化对象  8.5.3 持久化临时对象  8.5.4 更新游离...

    支持多数据库的ORM框架ef-orm.zip

    事实上针对单个对象的get/load/persist/save/update/merge/saveOrUpdate API和Criteria API本来就为一体,只不过是历史的原因被人为割裂成为两套数据库操作API罢了。  因此,对于关系型数据库而言——Entity和...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     8.4.5 Session的merge()方法  8.4.6 Session的delete()方法  8.4.7 Session的replicate()方法  8.5 级联操纵对象图  8.5.1 级联保存临时对象  8.5.2 更新持久化对象  8.5.3 持久化临时对象  8.5.4 更新游离...

    UE(官方下载)

    Keyboard shortcuts A quick reference guide to UltraEdit's default keyboard shortcuts Keymapping and custom hotkeys How to customize 键映射s and menu hotkeys Column Markers The benefit of a column ...

Global site tag (gtag.js) - Google Analytics