首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Hibernate知识辅导(2--3)

Hibernate知识辅导(2--3)

作者头像
紫风
发布2025-10-14 15:57:52
发布2025-10-14 15:57:52
150
举报

常用的是共享主键策略来完成一对一关系的映射

User类的映射文件User.hbm.xml

<hibernate-mapping package="alan.hbn.rel.o2o">

     <class name="User" table="user_o2o_pk">

         <id name="userId" column="userid">

              <generator class="identity"/>

 <!--标明主键采取自增列方式生成-->

         </id>

         <property name="userName" column="username"/>

         <one-to-one name="address" class="Address" cascade="all"/>

<!--

标明一对一的关系在本类中的另一类的属性和类型,以及级连操作的范围

name属性标明User类中的Address类的对象名,class标明其类型

-->

    </class>

</hibernate-mapping>

Address类的映射文件Address.hbm.xml

<hibernate-mapping package="alan.hbn.rel.o2o">

     <class name="Address" table="address_o2o_pk">

         <id name="addressId" column="addressid">

              <generator  class="foreign">

<!--标明主键采用共享主键策略-->

                 <param name="property">user</param>

<!--标明是引用自那个关联类的主键-->

           </generator>

         </id>

         <property name="street" column="street"/>

         <property name="zipcode" column="zipcode"/>

         <one-to-one name="user" class="User" constrained="true"/>

<!--

标明一对一的关系在本类中的另一类的属性和类型,以及级连操作的范围

name属性标明Address类中的User类的对象名,class标明其类型,

constrained的属性关联是采取外键引用并作为主键,在采取共享主键时,

<generator  class="foreign">和<one-to-one ....constrained="true">

是同时存在的

-->

</class>

</hibernate-mapping>

外键策略来完成一对一关系的映射

User类的映射文件User.hbm.xml

<hibernate-mapping package="alan.hbn.rel.o2o">

     <class name="User" table="user_o2o_pk">

         <id name="userId" column="userid">

              <generator class="identity"/>

 <!--标明主键采取自增列方式生成-->

         </id>

         <property name="userName" column="username"/>

         <one-to-one name="address" class="Address" cascade="all"/>

<!--

标明一对一的关系在本类中的另一类的属性和类型,以及级连操作的范围

name属性标明User类中的Address类的对象名,class标明其类型

-->

    </class>

</hibernate-mapping>

Address类的映射文件Address.hbm.xml

<hibernate-mapping package="alan.hbn.rel.o2o">

     <class name="Address" table="address_o2o_pk">

         <id name="addressId" column="addressid">

              <generator  class=" identity "/>

<!--标明主键采用自增列策略-->

         </id>

         <property name="street" column="street"/>

         <property name="zipcode" column="zipcode"/>

         <many-to-one  name="user"

                      class="User"

                      column="userid"

                      cascade="all"

                      unique="true"/>

<!--   

这里的<many-to-one>是做外键引用策略使用的并不是Address和User类是个一对多的关系,但是可以通过这对这种一对多关系加上特殊的约束来表示一对一的关系,也就是每一个User类的对象制等对应一个Address类的对象,就可以在表里对User和Address一对多关系的外键上作文章,当一个User类对象对应多个Address类对象的时候,address表中的对应user表中的外键就有多条是相同的,只要强制这个外键是唯一的就可以达到一对一关系的目标了

-->

</class>

</hibernate-mapping>

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2008-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档