`
p_3er
  • 浏览: 52597 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

如: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>


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


分享到:
评论

相关推荐

    hibernate学习笔记

    hibernate一对一唯一外键关联映射(单向关联Person----&gt;IdCard) 10 hibernate一对一唯一外键关联映射(双向关联Person&lt;----&gt;IdCard) 11 session flush测试(hibernate_session_flush) 12 hihernate一对多关联映射...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用元素  15.3.3 使用组件类...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用元素  15.3.3 使用组件类...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用元素  15.3.3 使用组件类...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     15.1 映射一对一关联  15.1.1 按照外键映射   15.1.2 按照主键映射  15.2 映射单向多对多关联  15.3 映射双向多对多关联关系  15.3.1 关联两端使用元素  15.3.2 在inverse端使用元素  15.3.3 使用组件类...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    7.2.2. 一对一(one to one) 7.2.3. 一对多(one to many) 7.3. 使用连接表的单向关联(Unidirectional associations with join tables) 7.3.1. 一对多(one to many) 7.3.2. 多对一(many to one) 7.3.3. ...

    Hibernate实战(第2版 中文高清版)

     7.1.2 一对一的外键关联   7.1.3 用联结表映射   7.2 多值的实体关联   7.2.1 一对多关联   7.2.2 多对多关联   7.2.3 把列添加到联结表   7.2.4 映射map   7.3 多态关联   7.3.1 多态的多对一...

    Hibernate3的帮助文档

    8.5.2. 一对一(one to one) 8.5.3. 多对多(many to many) 9. 组件(Component)映射 9.1. 依赖对象(Dependent objects) 9.2. 在集合中出现的依赖对象 9.3. 组件作为Map的索引(Components as Map indices ...

    《数据库原理与应用》复习.doc

    在一个关系模式中,主键 p 只有一个,而候选键 k 可有多个,因此,p 具有唯一性,k 不具有唯一性。 14. 关于外键 X:X 在关系模式 R(U)中不能为主键;X 必须与关系模式 Q(V)中的主键关联;假设删除关系模式 R(U)中...

    Entity Framework 6 Recipes(中文word翻译版)

    第9部分 实体数据建模基础之继承关系映射TPH 第10部分 实体数据建模基础之两实体间Is-a和Has-a关系建模、嵌入值映射 第11部分 查询之异步查询 第12部分 查询之使用SQL语句 第13部分 查询之使用Entity SQL 第14部分 ...

    hibernate 框架详解

    一对一(one to one) 8.5. 使用连接表的双向关联(Bidirectional associations with join tables) 8.5.1. 一对多(one to many) /多对一( many to one) 8.5.2. 一对一(one to one) 8.5.3. 多对多...

    hibernate3.04中文文档.chm

    8.4.2. 一对一(one to one) 8.5. 使用连接表的双向关联(Bidirectional associations with join tables) 8.5.1. 一对多(one to many) /多对一( many to one) 8.5.2. 一对一(one to one) 8.5.3. 多对多...

    领域驱动设计与模式实战

    第9章 应用NHibernate 9.1 为什么使用NHibernate 9.2 NHibernate简介 9.2.1 准备 9.2.2 一些映射元数据 9.2.3 一个小的API示例 9.2.4 事务 9.3 持久化基础架构的需求 9.3.1 高级持久化透明 9.3.2 持久化实体的生命...

    Hibernate中文详细学习文档

    7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多...

    Hibernate教程

    8.2.2. 一对一(one to one) 8.2.3. 一对多(one to many) 8.3. 使用连接表的单向关联(Unidirectional associations with join tables) 8.3.1. 一对多(one to many) 8.3.2. 多对一(many to one) 8.3.3. 一...

    hibernate 体系结构与配置 参考文档(html)

    一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many ...

    Hibernate参考文档

    7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多...

    最全Hibernate 参考文档

    7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多...

    HibernateAPI中文版.chm

    7.2.2. 一对一(one to one) 7.2.3. 一对多(one to many) 7.3. 使用连接表的单向关联(Unidirectional associations with join tables) 7.3.1. 一对多(one to many) 7.3.2. 多对一(many to one) 7.3.3. ...

Global site tag (gtag.js) - Google Analytics