hibernate一对一关联
2016-04-13 20:48
302 查看
1. 一对一主键的双向关联
一个公司对应一个地址, 一个地址对应一家公司
2. 一对一外键的双向关联
Company.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.itcast.Company" table="companyfk">
<id name="id" column="id" type="integer">
<generator class="identity"/>
</id>
<property name="name" column="name" type=”string”/>
<!--
通过many-to-one增加唯一约束实现一对一关联
unique=”true” 设置companyfk表的外键唯一
column=”aid” 必须卸载many-to-one中才可用,不能使用column标签
-->
<many-to-one name="address" class=”cn.itcast.Address” column=”aid” unique=”true”/>
</class>
</hibernate-mapping>
Address.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.itcast.Address" table="addressfk">
<id name="id" column="id" type="integer">
<generator class="identity">
</generator>
</id>
<property name="city" column="city" type=”string”/>
<property name="country" column="country" type=”string”/>
<!--
property-ref=”address” : 建立从address对象到company对象的关联
-->
<one-to-one name="company" class=”cn.itcast.Company” property-ref=”address”/>
</class>
</hibernate-mapping>
一个公司对应一个地址, 一个地址对应一家公司
public class Company { private Integer id; private String name; private Address address; // 一家公司对应一个地址 } public class Address { private Integer id; private String city; private String country; private Company company; // 一个地址含有一家公司 }Company.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="cn.itcast.Company" table="companypk"> <id name="id" column="id" type="integer"> <generator class="identity"/> </id> <property name="name" column="name" type=”string”/> <!--配置Company和地址的一对一关联--> <one-to-one name="address" class=”cn.itcast.Address”/> </class> </hibernate-mapping>Address.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="cn.itcast.Address" table="addresspk"> <id name="id" column="id" type="integer"> <!— foreign: 表示主键生成策略使用foreign * 即addresspk表的主键的生成参照另一个表(companypk) 的主键 --> <generator class="foreign"> <!— property: Address类对应表主键的生成,参照该类中的属性company --> <param name=”property”>company</param> </generator> </id> <property name="city" column="city" type=”string”/> <property name="country" column="country" type=”string”/> <!-- one-to-one 配置Address和Company的一对一关联 constrained=”true”: 为addresspk增加外键约束 --> <one-to-one name="company" class=”cn.itcast.Company” constrained=”true”/> </class> </hibernate-mapping>
2. 一对一外键的双向关联
Company.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.itcast.Company" table="companyfk">
<id name="id" column="id" type="integer">
<generator class="identity"/>
</id>
<property name="name" column="name" type=”string”/>
<!--
通过many-to-one增加唯一约束实现一对一关联
unique=”true” 设置companyfk表的外键唯一
column=”aid” 必须卸载many-to-one中才可用,不能使用column标签
-->
<many-to-one name="address" class=”cn.itcast.Address” column=”aid” unique=”true”/>
</class>
</hibernate-mapping>
Address.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.itcast.Address" table="addressfk">
<id name="id" column="id" type="integer">
<generator class="identity">
</generator>
</id>
<property name="city" column="city" type=”string”/>
<property name="country" column="country" type=”string”/>
<!--
property-ref=”address” : 建立从address对象到company对象的关联
-->
<one-to-one name="company" class=”cn.itcast.Company” property-ref=”address”/>
</class>
</hibernate-mapping>
相关文章推荐
- Huffman树的简单实现
- python解决SNIMissingWarning和InsecurePlatformWarning警告
- 【BLE】CC2541之主机端读取特征值
- 设置textview文字跑马灯效果
- Hadoop+HBase+ZooKeeper三者关系与安装配置
- 为什么数据库连接池异步的少
- c中的static变量
- 软件项目管理第六周作业(知识点部分)
- Ubuntu14.04下安装与配置Apache服务器
- 第一个JavaScript程序
- 【dp】【codeforces】 451D Count Good Substrings
- 取消Dialog时的一些设置
- 安卓使用代码得到当前程序的版本号和版本名
- 安卓使用代码安装Apk
- strut2实现文件上传
- Openstack学习笔记(十三)-Horizon学习笔记(三)
- Linux 网络设备驱动开发(一) —— linux内核网络分层结构
- 通过stringByTrimmingCharactersInSet去除字符串两端的特殊符号
- 解决内存泄漏案例
- 【WC2013】糖果公园