日期:2014-05-20  浏览次数:20669 次

hibernate级联更新变保存操作
一对多双向关联,多方维护关系
保存及删除都没有问题
只有级联更新,一方更新没有问题,但多方不是更新,而是变成了保存操作,不知道是什么原因
public void editBean() {
    bean = (Case) session.load(Calss.class, id);
  session.close();
  bean.setXX();
  ....
  ....
  ....
getYjjcData();
db.mdfobjObject(bean);
}


public void getYjjcData(){
String[] jcdw = req.getParameterValues("jcdw");
String[] xmdm = req.getParameterValues("xmdm");
String[] jcz = req.getParameterValues("jcz");
Set ss = new HashSet();
for(int i=0;i<jcdw.length;i++){
cidBean = new Caseinferdata();
cidBean.setJcdw(jcdw[i]);
cidBean.setXmdm(xmdm[i]);
cidBean.setJcz(jcz[i]);
cidBean.setC(bean);
ss.add(cidBean);
}
bean.setCidSet(ss);
}


public boolean mdfobjObject(Object o){
  //执行update方法
 session.update(o);
  //其他代码略
}

------解决方案--------------------
就是因为是非持久对象所以才要保存呀

若是持久对象就只需更新了

用set方法是new了一个新的CidSet(),是非持久化的
用get方法是取得了一个持久的CidSet()