• 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",所有操作都传递到相关联的对象 并删除不再与主对象关联的对象

  • 相关阅读:
    webpack配置之代码优化
    react组件生命周期
    javascript记住用户名和登录密码
    ajax异步请求原理和过程
    深入理解ajax系列第五篇——进度事件
    ajax多次请求,只执行最后一次的方法
    CentOS6.8下MySQL MHA架构搭建笔记
    HTTP状态码
    什么是 Redis 事务?原理是什么?
    Redis 通讯协议是什么?有什么特点?
  • 原文地址:https://www.cnblogs.com/MR520/p/2112241.html
Copyright © 2020-2023  润新知