高分啊!我使用级联的时候,通过parent保存child,child每次都不是insert 而都是update 建议去看看夏昕的《hibernate开发指南》里面有关于inverse和cascade的探讨 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你在bag标签中设置了inverse=true,也就是关联关系让child去维护,你在保存parent的时候,如果是这样操作的话,parent.getChilids().add(child),然后你保存parent的时候是child是插不进去的,因为关联关系让child维护的话,只能这样操作,Object parent = new Object(); child.setParent(parent); session.save(child);也就是说只要你设置了inverse=true的话,就只能让child去保存它自己了,如果inverse=false的话,是可以通过第一种方式来操作的,不过那样会多很多update语句.. http://blog.chinaunix.net/u2/77127/showart_1270265.html inverse="true" 的问题, inverse是指出谁代表主控方; 他在容器,也就是楼主用bag,或者set,list等,其实默认是 inverse="false"的; 而在一对多的,多的那张表的<one-to-many>中他默认是 inverse="true"(这个用提示是能够查到的) 如果你两张表默认都是inverse="true",也就是说都是主控方,绝对会出现楼主这样的问题; 因此只有将 bag的inverse="true" 删除就OK了; <bag name="EM_Methods" table="EM_Method" lazy="false" cascade="all"> 最好将一的一方默认inverse="false",这样会提升效率; 好比,一是校长,多是学生,校长不必知道每个学生,但每个学生都应该知道校长; 因此多的一方作为主控制会效率更高一些 抱歉,,抱歉....说反了...inverse= "false "是主控方..时间太久了,记混了...不过意思还是一样 一头雾水,求大家进来帮帮忙 请教大家 如何解决axis-java2wsdl中的ClassNotFoundException错误 请教个HQL语句,实在搞不清楚怎么做了 J2EE到底是什么? Java中怎么判断中文中是否包含生僻字或繁体字??急求啊 求帮忙 struts标签问题 如何处理读取一个动态页面的内容?页面内可能会有检查cookie,或者检查页面是否直接访问 求解答问题有点复杂啊、 关于单例模式的疑问! struts2在tomcat中启动报错
Object parent = new Object(); child.setParent(parent); session.save(child);
也就是说只要你设置了inverse=true的话,就只能让child去保存它自己了,如果inverse=false的话,是可以通过第一种方式来操作的,
不过那样会多很多update语句..
他在容器,也就是楼主用bag,或者set,list等,其实默认是 inverse="false"的;
而在一对多的,多的那张表的<one-to-many>中他默认是 inverse="true"(这个用提示是能够查到的)
如果你两张表默认都是inverse="true",也就是说都是主控方,绝对会出现楼主这样的问题; 因此只有将 bag的inverse="true" 删除就OK了;
<bag name="EM_Methods" table="EM_Method" lazy="false" cascade="all"> 最好将一的一方默认inverse="false",这样会提升效率;
好比,一是校长,多是学生,校长不必知道每个学生,但每个学生都应该知道校长;
因此多的一方作为主控制会效率更高一些
不过意思还是一样