这里有篇文章讲述用unique=true多对一实现一对一关联的文章
多对一
文章后面测试
-------------------------------------------------------
2) :正常保存.
session.save(p1);
session.save(add1);Hibernate: insert into PERSON_11fk (name, age, addressId) values (?, ?, ?)
Hibernate: insert into ADDRESS_11fk (addressdetail) values (?)
Hibernate: update PERSON_11fk set name=?, age=?, addressId=? where personid=?4) : 发生异常,不能保存.
session.save(p1);
// session.save(add1);//注释掉
Hibernate: insert into PERSON_11fk (name, age, addressId) values (?, ?, ?)
Exception in thread "main" org.hibernate.TransientObjectException: com.lavasoft.dx._1_1_fk.Address11fk
--------------------------------------------------------------疑问:
1. 针对2)中insert into PERSON_11fk (name, age, addressId) values (?, ?, ?),我认为这里的addressId因为Address11fk对象还没有被持久化,所以这里插入的addressId为null或初始值,等到Address11fk持久化后执行第三条update语句更新。我的理解正确吗?
2. 针对4)如果我上面的推断成立的话,为何4)会报错呢?如果要报错的话,2)中的第一条insert 也应该报错呀?
多对一
文章后面测试
-------------------------------------------------------
2) :正常保存.
session.save(p1);
session.save(add1);Hibernate: insert into PERSON_11fk (name, age, addressId) values (?, ?, ?)
Hibernate: insert into ADDRESS_11fk (addressdetail) values (?)
Hibernate: update PERSON_11fk set name=?, age=?, addressId=? where personid=?4) : 发生异常,不能保存.
session.save(p1);
// session.save(add1);//注释掉
Hibernate: insert into PERSON_11fk (name, age, addressId) values (?, ?, ?)
Exception in thread "main" org.hibernate.TransientObjectException: com.lavasoft.dx._1_1_fk.Address11fk
--------------------------------------------------------------疑问:
1. 针对2)中insert into PERSON_11fk (name, age, addressId) values (?, ?, ?),我认为这里的addressId因为Address11fk对象还没有被持久化,所以这里插入的addressId为null或初始值,等到Address11fk持久化后执行第三条update语句更新。我的理解正确吗?
2. 针对4)如果我上面的推断成立的话,为何4)会报错呢?如果要报错的话,2)中的第一条insert 也应该报错呀?
解决方案 »
- 从oracle一个表中导出10万条记录,写入excel中慢,如何优化hibernate
- struts2 s:action标签循环打印问题
- 关于Spring声明式事务、DAO(Bean继承理解)请朋友们帮忙分析下
- spring配置问题
- powerdesigner问题
- 谁知道mysql单jar包驱动如mysql-connector-java-3.1.6-bin.jar在哪里有下载的??
- 请推荐j2ee或者ejb的好书
- weblogic共享session问题
- 如何将应用程序和web应用结合在一起?
- CMP中JNDI的问题。
- eclipse配置Struts2的问题,class文件在哪儿
- <c:if>标签能从session域中获取数据么
多对1
多 1
1的引用 Set<多>
我觉得是这样的映射方式吧!
配置文件中 一个<many-to-one> 另一个 <set><key../<one-to-many.../></set> 吧!
而且 我们一般在 1的一方取消 关联管理 即 inverse=true,这样可以避免在没有擦入 主表的内容时 先擦入字表 带来的 外键字段的 null擦入 和 不必要的 update!
都没有正面回答我的问题呢?
session.save(p1);
System.out.println(p1.getAddress11fk().getId());
session.save(add1);
此时的addressId值是什么?
http://lavasoft.blog.51cto.com/62575/39279