【Hibernate】——双向关联映射
来源:互联网 发布:淘宝网店代销 编辑:程序博客网 时间:2024/05/04 08:55
双向关联(Bidirectional associations)
一对多(one to many) / 多对一(many to one)
双向多对一关联 是最常见的关联关系。(这也是标准的父/子关联关系。)
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <many-to-one name="address" column="addressId" not-null="true"/></class><class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> <set name="people" inverse="true"> <key column="addressId"/> <one-to-many class="Person"/> </set></class>create table Person ( personId bigint not null primary key, addressId bigint not null )create table Address ( addressId bigint not null primary key )
如果你使用List(或者其他有序集合类),你需要设置外键对应的key列为not null,让Hibernate来从集合端管理关联,维护每个元素的索引(通过设置update="false" andinsert="false"来对另一端反向操作)。
<class name="Person"> <id name="id"/> ... <many-to-one name="address" column="addressId" not-null="true" insert="false" update="false"/></class><class name="Address"> <id name="id"/> ... <list name="people"> <key column="addressId" not-null="true"/> <list-index column="peopleIdx"/> <one-to-many class="Person"/> </list></class>
假若集合映射的<key>元素对应的底层外键字段是NOT NULL的,那么为这一key元素定义not-null="true"是很重要的。不要仅仅为可能的嵌套<column>元素定义not-null="true",<key>元素也是需要的。
一对一(one to one)
基于外键关联的双向一对一关联也很常见。
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <many-to-one name="address" column="addressId" unique="true" not-null="true"/></class><class name="Address"> <id name="id" column="addressId"> <generator class="native"/> </id> <one-to-one name="person" property-ref="address"/></class>create table Person ( personId bigint not null primary key, addressId bigint not null unique )create table Address ( addressId bigint not null primary key )基于主键关联的一对一关联需要使用特定的id生成器。
<class name="Person"> <id name="id" column="personId"> <generator class="native"/> </id> <one-to-one name="address"/></class><class name="Address"> <id name="id" column="personId"> <generator class="foreign"> <param name="property">person</param> </generator> </id> <one-to-one name="person" constrained="true"/></class>create table Person ( personId bigint not null primary key )create table Address ( personId bigint not null primary key )
1 0
- 【Hibernate】——双向关联映射
- Hibernate映射——一对一双向关联映射(六)
- hibernate关联映射-双向
- hibernate 一对一双向关联映射
- 【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)
- 【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)
- 【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)
- 【SSH】——Hibernate(5)关联映射之双向映射
- 【SSH进阶之路】Hibernate映射——一对一双向关联映射(六)
- Hibernate 关联映射之---- 一对一双向映射
- Hibernate关联映射之一对一双向关联映射
- Hibernate关联映射之多对多单/双向关联映射
- hibernate一对多关联映射——双向(非常常用)
- 精通Hibernate——映射一对多双向自身关联关系
- Hibernate 双向 1 对 1 对象关系映射 —— 主键关联 下 ,测试 crud
- Hibernate 双向 1 对 1 对象关系映射 —外键关联 下 ,测试 crud
- Hibernate多对多双向关联映射
- Hibernate一对多关联双向映射
- 从一个进度条看问题
- NOIP2013 提高组 复赛 day1 circle 转圈游戏
- linux中实现一个简单的进度条
- 人生中唯一的2016
- HTML基础知识(三)--文本格式标签
- 【Hibernate】——双向关联映射
- Layout获取焦点后,如何让子控件TextView产生走马灯效果?
- HDU_1495非常可乐(BFS)
- 数据结构与算法(C语言版)__堆排序
- (五)WebService之CXF和Spring整合
- Lattice系列FPGA入门相关0(Lattice与Altera、Xilinx对比及入门)
- OpenCV机器学习算法学习
- 2016年12月31日总结
- Jedis与Spring的整合