您的位置:首页 > 其它

hibernate一对一关联

2016-04-13 20:48 302 查看
1. 一对一主键的双向关联 

一个公司对应一个地址, 一个地址对应一家公司

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: