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

  • 相关阅读:
    SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSAS 系列
    微软BI 之SSRS 系列
    微软BI 之SSRS 系列
    配置 SQL Server Email 发送以及 Job 的 Notification通知功能
  • 原文地址:https://www.cnblogs.com/MR520/p/2112241.html
Copyright © 2011-2022 走看看