zoukankan      html  css  js  c++  java
  • Hibernate 一对一实现

            hibernate中一对一(1:1)是多对一(N:1)的特例,

       若需要用一对一的关系时,A和B表使用相同主键使用one-to-one,若是A主键是B表外键使用manty-to-one

       (1).采用one-to-one,默认cascade="all"级联关系, 设置property-ref=""对应字段,constrained="true"表示约束即B表的主键作为外键参照A表主键

       (2).采用many-to-one,并且设置 unique="true",表示数据也必须是唯一的,默认cascade="none";

            只需要在其中一个类及文件中加入此配置。

            IdCard表 配置文件(IdCard.hbm.xml)如下(表示用户与身份号码一一对应关系):

     1     <class name="IdCard" table="IdCard" dynamic-update="true">
    2
    3 <id name="id" column="card_id">
    4 <generator class="sequence">
    5 <param name="sequence">idcard_card_id_seq</param>
    6 </generator>
    7 </id>
    8
    9 <property name="card_number" type="string" column="card_number"/>
    10 <!-- one-to-one 默认cascade="all" 主从表使用相同主键使用
    11 <one-to-one name="userinfo" class="UserInfo" property-ref="id" cascade="all" constrained="true">
    12 </one-to-one>
    13 -->
    14 <!-- 一对一可以使用many-to-one 设置unique="true" 关联外键,默认cascade="none",作为外键依赖使用 -->
    15 <many-to-one name="userinfo" class="UserInfo" column="id" unique="true" />
    16 </class>

       备注:cascade级联,即关联对象是否执行同一操作,值有:all、none、save-update、delete、all-delete-orphan

       (1).cascade="all",关联对象执行save-update和delete操作,都对关联对象执行同步操作

          (2).cascade="none",关联对象不执行关联操作

          (3).cascade="save-update",关联对象执行save/update/saveOrUpdate时进行关联操作

      (4).cascade="delete",关联对象执行delete时进行关联操作

          (5).cascade="all-delete-orphan",所有操作都传递到相关联的对象 并删除不再与主对象关联的对象

  • 相关阅读:
    黑马程序员文件流的写入
    SCOPE_IDENTITY()代替 @@IDENTITY
    Asp.net 常用的正则表达式汇集
    jquery工作小笔记:jquery获取页面上控件的值
    将公历转换成农历的类_C#
    数字人民币(RMB)转化为大写字母
    常用JS判断各种格式,以及替换函数等
    iis预览.net发布的网站时遇到的莫名问题:无资源行。
    sql 自动补位
    switchhost引发的问题
  • 原文地址:https://www.cnblogs.com/MR520/p/2112241.html
Copyright © 2011-2022 走看看