第九章 关系映射 一对一关系 唯一外键方式实现一对一

简介: <p><strong><span style="white-space:pre"></span>如:person与idCard</strong></p> <p align="left"><span style="white-space:pre"></span>基于外键的one-to-one可以描述为多对一。</p> <p align="left"> <span style="white

如:person与idCard

基于外键的one-to-one可以描述为多对一。

  hibernate 一对一唯一外键关联映射(双向关联 Person<---->IdCard ) 
         一对一唯一外键 双向 关联,需要在另一端(person ),添加 <one-to-one> 标签,指示 hibernate 如何加载 其关联对象,默认根据主键加载idcard ,外键关联映射中,因为两个实体采用的是 idcard 的外键维护的关系, 所以不能指定主键加载 idcard ,而要根据 idcard 的外键加载,所以采用如下映射方式: 
        <one-to-onename="idcard" property-ref="person"/>

id_card表中有一个person_id的外键。

实体类和根据共享主键方式中的一样,不变。


Person.hbm.xml:

<hibernate-mapping>
    <class name="cn.framelife.hibernate.entity.Person" table="person" catalog="hibernate">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="45" not-null="true" />
        </property>
         <!-- 没有下面的one-to-one标签也行,但那样就变成了单向关联(IdCard ----》 Person) ,也就是当知道IdCard后,能找到它属于的对应的人,但知道某人后,却无法找到相对应的IdCard-->  
        <one-to-one name="idCard" property-ref="person"/>  
    </class>
</hibernate-mapping>

IdCard.hbm.xml:

<hibernate-mapping>
	<class name="cn.framelife.hibernate.entity.IdCard" table="id_card"
		catalog="hibernate">
		<id name="id" type="java.lang.Integer">
			<column name="id" />
			<generator class="native" />
		</id>
		<property name="cardNo" type="java.lang.String">
			<column name="card_no" length="45" not-null="true" />
		</property>
		<!-- 
		指定多的一端的unique=true,这样就限制了多的一端的多重性为一   
                  通过这种手段映射一对一唯一外键关联 
        -->  
		<many-to-one name="person" column="person_id" unique="true" />  
	</class>
</hibernate-mapping>


增加与查询操作和结果都与共享主键方式中是一样的


目录
相关文章
|
6月前
|
SQL Java 数据库连接
认识Mybatis的关联关系映射,灵活关联表对象之间的关系
认识Mybatis的关联关系映射,灵活关联表对象之间的关系
69 0
|
5月前
|
存储 Java 数据库连接
【Mybatis】关系映射 表对象之间的关系
【Mybatis】关系映射 表对象之间的关系
43 0
|
6月前
|
XML Java 数据库连接
Mybatis关联关系映射与表对象之间的关系
Mybatis关联关系映射与表对象之间的关系
19 0
Mybatis关联关系映射与表对象之间的关系
|
6月前
|
Java 数据库连接 测试技术
如何使用mybatis处理数据库关系中的一对多关系呢?
如何使用mybatis处理数据库关系中的一对多关系呢?
|
SQL 物联网 数据库
关系模型知识点总结(2)—— 关系完整性约束&关系操作基础
关系模型应提供定义和检验这类完整性机制,以便用统一的系统方法处理他们,而不需要由应用程序承担
187 0
关系模型知识点总结(2)—— 关系完整性约束&关系操作基础
|
网络安全
SSH框架中使用双向关联如何处理外键(添加)
EG:已知表customer :user 为1:多关系
83 0
|
存储 数据库 索引
|
SQL Java 数据库连接
JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法
黑马程序员我们知道,在设计一个Java bean的时候,要把这些BEAN 的数据存放在数据库中的表结构,然而这些数据库中的表直接又有些特殊的关系,例如员工与部门直接有一对多的关系,学生与老师直接又多对多的关系,那么这些表的关系如何表示呢?首先在建立数据库的时候就应该建立这样的对应关系。
1130 0