1、一对多复杂写法级联保存
//创建一个公司对象,为公司对象添加员工
GongsiEntity gongsi=new GongsiEntity();gongsi.setGname("百度");
YuangongEntity yuangong=new YuangongEntity();
yuangong.setYname("001");
//建立公司与员工的关系
//1、把员工放进公司的set集合里面
gongsi.getYuangongSet().add(yuangong);
//2、把公司放到员工里面
yuangong.setGongsiEntity(gongsi);
//保存到数据库
session.save(gongsi);
session.save(yuangong);
2、一对多简单写法级联保存(常用)
(1)在公司映射文件中进行配置
在set标签中添加属性cascade,属性值为save-update
(2)创建公司和员工对象,只需要把员工放到公司里面就可以了,最终只需要保存公司就可以了
3、一对多级联删除
(1)删除某个公司对象,把里面的员工也删除
(2)具体实现
1、在公司映射文件set标签的cascade的属性值添加delete
2、在代码中直接删除
GongsiEntity gongsi=(GongsiEntity)session.get(GongsiEntity.class,1);
session.delete(gongsi);
session.delete(gongsi);
4、一对多修改外键
(1)需要获取员工对象和公司对象,重新设置关系
//根据id查询
YuangongEntity yuangong=(YuangongEntity)session.get(YuangongEntity.class,3);
GongsiEntity guge=(GongsiEntity)session.get(GongsiEntity.class,2);
//把员工放到其他公司
guge.getYuangongSet().add(yuangong);
yuangong.setGongsiEntity(guge);
5、多对多级联保存
根据订单保存商品
1、在订单配置文件中set标签进行配置cascade值save_update
2、代码实现
创建订单和商品对象,把商品放到订单中,保存订单即可
6、多对多级联删除(了解,不常用)
与上面类似,需要在set标签配置cascade属性值为delete,
然后直接代码查询删除
7、多对多维护第三张表(关系表)
订单和商品多对多关系,维护关系通过第三张表
1、让某个订单有某个商品
(1)根据id查询出订单和商品
(2)把商品放到订单的set集合里面
2、让某个订单没有某个商品
(1)根据id查询出订单和商品
(2)把商品从订单的set集合中移除