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,成功。

 

转载于:https://www.cnblogs.com/lolybj/p/6266233.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值