一对多关联映射(双向关联)见项目:me_one_to_many2
来源:互联网 发布:编程教程视频 编辑:程序博客网 时间:2024/06/13 13:06
The original website:http://java999.blog.51cto.com/259217/119433
一对多双向关联映射的方法:
model:Group(N) and User(1)
在"一"一端:
在集合标签里面使用<key>标签来表明需要在对方的表中添加一个外键指向"一"一端。
<set name="users" order-by="name" cascade="all" inverse="true">
<key column="groupid"/>
<one-to-many class="com.dvnchina.hibernate.User"/>
</set>
在"多"一端:
使用<many-to-one>标签来映射。name值需同实体类中的属性名一致。
<many-to-one name="group" column="groupid"/>
需要注意:<key>标签所指定的外键字段名需要与<many-to-one>标签定义的外键字段名一致,否则便会造成引用数据的丢失!
如果从"一"一端来维护一对多双向关联的关系,hibernate会发出多余的update语句,所以一般地情况下,我们便会从多一端来维护其关联关系!
关于inverse属性:
inverse属性可以被设置到集合标签<set>上,表示在存储双向一对多关联映射的时候,存储的是那一方的关联引用。默认情况下,inverse=“false”,所以,我们可以从一多端或者多一端来维护两者之间的关系;如果我们设置inverse=“true”,则只能通过多一端来维护两者之间的关系。inverse属性可以被用在一对多和多对多双向关联中;
外键不需写进实体类中,写实体类时,"多"的一端写一个"一"的实体属性,"一"的一端写一个"多"的集合属性。注意:inverse属性只是在将数据持久化到数据库的过程中发挥作用.如:
User.java
public class User {
private int id;
private String name;
private Group group;
}
Group.java
public class Group {
private int id;
private String name;
private Set Users;
}
Cascade与inverse解析:
cascade:关联表的连锁反应。
inverse:关联关系的控制方向。
在一对多双向关联映射中,它们都是在"一"的一端的set标签中设置,如在group.hbm.xml中设置:
<set name="users" order-by="name" cascade="all" inverse="true">
<key column="groupid"/>
<one-to-many class="com.dvnchina.hibernate.User"/>
</set>
cascade="all":当"一"端save-update-delete时,若多端为瞬时对象时,先save-update-delete"多"端,而不需多端为持久对象,若没此设置,当一端save-update-delete时所关联的多端必须为持久对象,否则抛出TransientObjectException。
inverse="true" :由于只能在”一”一端配置inverse,所以”一”一端将控制关系给"多"的一端,只能通过多一端来维护两者之间的关系。
由于一对多双向关联映射是和单向一对多,多对一的结合,这里就不在写例子了
- 一对多关联映射(双向关联)见项目:me_one_to_many2
- 一对多关联映射(双向)
- 一对多双向关联映射(九)
- hibernate一对多关联映射(双向关联)(转)
- Hibernate 一对多关联映射(双向关联)
- Hibernate关联映射 --- 一对多实例分析(双向关联)
- 06映射一对多双向关联关系
- Hibernate一对多关联双向映射
- 一对多自身关联双向映射
- hibernate映射一对多双向关联关系
- Hibernate一对多双向关联映射
- 双向一对多的关联映射
- JPA映射关联关系-双向一对多
- hibernate4- 双向一对多的关联映射
- Hibernate一对多双向关联映射
- mybatis的一对多双向关联映射
- hibernate 关联映射 双向多对一(一对多)
- hibernate笔记(双向一对多关联映射)
- Java 基础一些代码练习笔记(Array数组)
- SAP企业报表
- DB2函数大全
- Android 如何在XML文件中定义动画
- linux 鼠标设置
- 一对多关联映射(双向关联)见项目:me_one_to_many2
- 插件不既有Chrome版也有飞鸽传书
- C++基础:C++类成员属性的一种简洁实现
- SAP中实现生产订单自动关闭
- Socket简单用法
- buntu下安装jdk1.5和jdk1.6,并相互切换
- 用python写语言的解释器
- Android判断当前网络是否可用--示例代码
- C++实现自动为对象添加“属性”访问代码