还是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()……
分享到:
相关推荐
Hibernate中session的merge以及update方法
示例 4a - 使用session.merge(..)更新非 Hibernate 托管实体。 示例 5 - 删除会话中已存在具有相同标识符的实体的非 Hibernate 受管实体。 示例 5a - 在删除非 Hibernate 受管实体之前首先使用session.merge(..) 。...
Hibernate中的merge使用详情解说
我身边的朋友经常会分不清save、saveOrUpdate、update的区别,lock、merge、replicate、refresh、evict甚至不知道是干什么用的。而且关于实体对象的生命周期也有很多概念不清,分不清transient、persistent、...
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实例...
4.3 STATELESS SESSION BEAN与STATEFUL SESSION BEAN的区别...............................................................................22 4.4 如何改变SESSION BEAN的JNDI 名称...............................
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实例...
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...
计算机视觉的深度学习 Packt的《用于计算机视觉的深度学习》的代码存储库 这是发布的“ 的代码库。 它包含从头到尾完成本书所必需的所有支持...train_summary_writer = tf.summary.FileWriter('/tmp/train' , session.g
在做网络训练实验时,有时需要同时将训练曲线和测试曲线一起显示,便于观察网络训练效果。经过很多次踩坑后,终于解决了。...megred = tf.summary.merge_all() with tf.Session() as sess: writer_tra
今天照着样例搞了下tensorboard,...summary_op=tf.summary.merge_all() 原位置如下: 我把summary_op给放再with tf.Session() 下了。这样子做是没有效果了,summary_op相当于没有被赋值。所以导致我没有获得我想要保
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)...
第一种: ...解决方法: 在C:/Users/DELL/.ssh/中新建一个config文件 并写入: 重新执行 $ git push -u origin master: 这个方法是从国外一个人的博客中找的,具体原理是什么我还不太清楚,但是觉得似乎有一点点...
4) head: Session的头, head[0]为第一个Session, head[max-1]为最后一个session 5) init: 这一服务中每个Session需要执行的初始化操作. (函数指针) 6) process: 这一服务中消息的处理函数 7) closure: 这一服务中...
4) head: Session的头, head[0]为第一个Session, head[max-1]为最后一个session 5) init: 这一服务中每个Session需要执行的初始化操作. (函数指针) 6) process: 这一服务中消息的处理函数 7) closure: 这一服务中...
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 ...
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 更新游离...
事实上针对单个对象的get/load/persist/save/update/merge/saveOrUpdate API和Criteria API本来就为一体,只不过是历史的原因被人为割裂成为两套数据库操作API罢了。 因此,对于关系型数据库而言——Entity和...
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 更新游离...
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 ...