zoukankan      html  css  js  c++  java
  • hibernate一对多哪一方放弃权利?

    如果一的一方inverse=false,多得一方inverse=true,即一的一方没有放弃维护一对多关系的权利,多的一方放弃了,即,如果(假设x为一的一方对象,y为多的一方对象),x中有y的集合set<y>,然后集合里面每个y的对象还带了yid,则save(x)的时候hibernate就会帮我们把那些y

    的对应的表的记录yid对应的记录上的外键添上xid以此来维护x、y之间的联系,这个时候,一的一方x来维护关系,如果x被删除了,或者主键变化了,则相对应的y的外键会清空和置为null;

    而x那里inverse=true,y那里默认inverse=false,由多的一方来维护关系,即,当y更换关联的对象时,把外键换成另外一个,也不会影响x里面的数据,

    所以,我们一般由多的一方来维护一对多的关系,一的一方经常就是inverse=ture

    例如:

    package com.lxl.bos.service.impl;
    import java.util.HashSet;
    import java.util.Set;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Transactional;
    import com.lxl.bos.dao.dao.IDecidedzoneDao;
    import com.lxl.bos.dao.dao.ISubareaDao;
    import com.lxl.bos.domain.Decidedzone;
    import com.lxl.bos.domain.Subarea;
    import com.lxl.bos.service.IDecidedzoneService;
    @Service
    @Transactional
    public class DecidedzoneServiceImpl implements IDecidedzoneService {
    //注入Dao
     @Autowired
     private IDecidedzoneDao decidedzoneDaoImpl;
     private ISubareaDao subareaDaoImpl;
     @Override
     public void save(String[] subareaid,Decidedzone model) {
      // TODO Auto-generated method stub
      //先把一的一方存进数据库
      decidedzoneDaoImpl.save(model);
      for(String subarea:subareaid)
      {
      Subarea subarea2=subareaDaoImpl.findById(subarea);
      //因为这里的一的一方放弃了维护外键关联的权利,所以这里就算是save了,subarea里面的外键也不会改变
      //model.getSubareas().add(subarea2);
      //用多的一方存储一的一方的对象来建立关联关系和外键(此时的subarea2是持久态的,所以hibernate会根据快照机制把外键更新到数据库)
      subarea2.setDecidedzone(model);
      }
      
     }
     
     
    }
  • 相关阅读:
    Debian 9/Ubuntu 18添加rc.local开机自启的方法
    第一次使用Debian9所遇到的问题
    Open-Falcon注册时点击Sign up按钮没反应
    使用VMware虚拟机里的Ubuntu18.04部署RAID 10磁盘阵列
    Ubuntu18.04下Ansible的基本使用
    Go语言求水仙花数(for循环)
    自研模块加载器(四) 模块资源定位-异步加载
    自研模块加载器(三) module模块构造器设计-模块数据初始化
    自研模块加载器(二) 加载器结构与设计导论
    自研模块加载器(一) 模块系统概述与自定义模块规范书写规定
  • 原文地址:https://www.cnblogs.com/lxl87/p/10810134.html
Copyright © 2011-2022 走看看