这里有篇文章讲述用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 也应该报错呀?
解决方案 »
- socket问题
- 【急!!高分求思路】Java应用与其链接的C库之间的通信
- 关于pattern.compile("(\\W){3}")里的{3}代表什么?
- Struts2+Spring+Hibernate项目中页面访问异常
- 关于分发Action的诡异问题……
- 如何在WSDD文件中,实现多个class文件生成一个WSDL文件?
- 怎么获得泛型返回参数的实际类型
- struts2上传图片怎样保存webroot目录下img文件, 二不是上传到服务器里面,因为要把项目部署别人的电脑上,求解?
- 用JFreeChart遇到的奇怪问题
- 各位大哥救命
- 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