• 级联保存


    可以主表级联多表,也可以多表级联主表,原理是一样的,主要的就是xml的配置上面:

    cascade="save-update"要加上

    主表的xml:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC 
     3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     5 <!-- ■■■■■■■■文件的名字是:Customer.hbn.xml -->
     6 <hibernate-mapping>
     7     <!-- 配置类和表结构对的映射 -->
     8     <!-- 用 一个类,和另一个表关联,Hibernate框架的本意就是这样 -->
     9     <class name="com.itheima.domain.Customer" table="cst_customer">
    10         <!-- 配置id 见到name属性,JavaBean的属性 见到column属性,是表结构的字段 -->
    11         <id name="cust_id" column="cust_id">
    12             <!-- 主键的生成策略 -->
    13             <generator class="natine"></generator>
    14         </id>
    15         <!-- 配置其他属性 -->
    16         <property name="cust_name" column="cust_name"></property>
    17         <property name="cust_user_id" column="cust_user_id"></property>
    18         <property name="cust_create_id" column="cust_create_id"></property>
    19         <property name="cust_source" column="cust_source"></property>
    20         <property name="cust_industry" column="cust_industry"></property>
    21         <property name="cust_level" column="cust_level"></property>
    22         <property name="cust_linkman" column="cust_linkman"></property>
    23         <property name="cust_phone" column="cust_phone"></property>
    24         <property name="cust_mobile" column="cust_mobile"></property>
    25         
    26         <!-- 配置一对多  hello hello 
    27         set标签 name属性:表示集合的名称
    28         cascade属性就是级联保存的属性
    29          -->
    30          <set name="linkmans" cascade="save-update">
    31          <!-- 需要出现子标签 -->
    32          <!-- 外键的字段 -->
    33          <key column="cust_user_id"></key>
    34          <one-to-many class="com.itheima.domain.Linkman"/>
    35          </set>
    36     </class>
    37 
    38 </hibernate-mapping>

    demo:

     1 /**
     2      * 级联保存,也就是只保存一个数据表的,那另外一个也保存了,这样就比较简单
     3      * 这个是保存客户,级联联系人
     4      */
     5     public void run2(){
     6         Session session = HibernateUtils.getCurrentSession();
     7         Transaction tr = session.beginTransaction();
     8         //保存客户和联系人的数据
     9         Customer c1 = new Customer();
    10         c1.setCust_name("美美");
    11         
    12         //创建两个联系人
    13         Linkman l1 = new Linkman();
    14         l1.setLkm_name("熊大");
    15         Linkman l2 = new Linkman();
    16         l2.setLkm_name("熊二");
    17         
    18         //演示双向关联
    19         //单表的设置
    20         c1.getLinkmans().add(l1);
    21         c1.getLinkmans().add(l2);
    22         session.save(c1);
    23 
    24         tr.commit();
    25     }
    26     
  • 相关阅读:
    poj 3744 Scout YYF I (矩阵快速幂 优化 概率dp)
    Codeforces Round #272 (Div. 2) D. Dreamoon and Sets (思维 数学 规律)
    Codeforces Round #272 (Div. 2) C. Dreamoon and Sums (数学 思维)
    hdu 5067 Harry And Dig Machine (状态压缩dp)
    hdu 4810 Wall Painting (组合数学+二进制)
    hdu 4856 Tunnels (bfs + 状压dp)
    tc srm 636 div2 500
    poj 2096 Collecting Bugs (概率dp 天数期望)
    ABC182 F Valid payments
    AT2699 [ARC081D] Flip and Rectangles
  • 原文地址:https://www.cnblogs.com/tidhy/p/6697339.html
Copyright © 2020-2023  润新知