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);
      }
      
     }
     
     
    }
  • 相关阅读:
    Android中 requestCode与resultCode的区别与用法
    Activity与Fragment之间的通信
    关于解决 从相册中选择照片后无法剪切图片以及无法加载图片的问题
    Codeforces Round #313 (Div. 2) C. Geralds Hexagon
    HDU 2669 Romantic
    HDU 1405 The Last Practice
    HDU Wolf and Rabbit
    LightOJ 1104 Birthday Paradox
    11181
    Tr A
  • 原文地址:https://www.cnblogs.com/lxl87/p/10810134.html
Copyright © 2011-2022 走看看