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);
      }
      
     }
     
     
    }
  • 相关阅读:
    PHP做Web开发的MVC框架(Smarty使用说明 )
    PHP + Smarty + html5 构建Wap应用
    HTML5游戏中动画帧的概念理解
    [转]jQuery选择器 (详解)
    2014马年应该有怎么样的学习方式和思考原则
    html5视频播放解决方案
    html5学习摘要
    sqlserver2008行锁
    关于一些url中传递参数有空格问题
    MongoDB和Redis区别
  • 原文地址:https://www.cnblogs.com/lxl87/p/10810134.html
Copyright © 2011-2022 走看看