zoukankan      html  css  js  c++  java
  • hibernate 一对多操作(级联操作)

    一对多级联操作

    1.  级联保存

    复杂写法

    Company company = new Company();
    company.setcName("Hello");
    company.setcAdress("World");
    Staff staff = new Staff();
    staff.setsName("hi");
    staff.setsAge(0);
    company.getSetStaff().add(staff);
    staff.setCompany(company);
    session.save(company);
    session.save(staff);  

    一般写法

    配置Company.hbm.xml,在set标签加入cascade="save-update" 表示级联保存

     

    Company company = new Company();
    company.setcName("Hello");
    company.setcAdress("World");
    Staff staff = new Staff();
    staff.setsName("hi");
    staff.setsAge(0);
    company.getSetStaff().add(staff);
    session.save(company);    

    保存前

    公司表

    员工表

    保存后

    公司表

    员工表

    公司,员工信息都保存成功,并且外键也对应成立

    2.  级联删除

    配置Company.hbm.xml,set标签加入cascade="delete" 表示级联删除。

     先获取company对象,在调用sessiondelete方法删除company.

           Company company = new Company();
            company = session.get(Company.class, 1);
            session.delete(company);

      

    删除前

    公司表

    员工表

    删除后

    公司表

    员工表

    即公司信息删除后,与删除的公司有关员工也会被删除。实现了级联删除效果。

    当未设置Company映射配置文件时,即set标签加入cascade="delete"

    删除前

    公司表

    员工表

    删除后

    公司表

     

    员工表

    即与删除公司有关的员工不会被删除而是将对应员工的外键设置为null

     3.一对多修改操作

    将id为4的员工公司改为id为为5的公司

    公司表

    员工表

    操作:

            Company company = new Company();
            company = session.get(Company.class, 5);
            Staff staff = new Staff();
            staff = session.get(Staff.class, 4);
            company.getSetStaff().add(staff);
            staff.setCompany(company);

    操作后

    员工的公司外键改为5,成功。

  • 相关阅读:
    Linux上vi(vim)编辑器使用教程
    什么是servlet
    探索ArrayList自动改变size真相
    十种算法
    二级缓存:EHCache的使用
    Lucene:基于Java的全文检索引擎简介
    简述 Hibernate 和 JDBC 的区别、优缺点
    Spring学习笔记
    如何复制表结构、如何复制表数据:
    破解安装 SecureCRT 7.0.2 for mac完美破解版,mac secureCRT , apple secureCRT
  • 原文地址:https://www.cnblogs.com/lolybj/p/6266233.html
Copyright © 2011-2022 走看看