CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  架构、设计

在Hibernate中如何以级联向方式同时向三张表中插入数据

楼主sunbird2008(地方财政赤字解决方案)2005-04-04 16:56:03 在 Java / 架构、设计 提问

我现在遇到了一个头痛的问题,我有三张表:actor、user、role.    
          actor表里有actorID,sername,password字段。  
          role表里有roleID,rolename字段。  
          user表里有userID,username,sex,address,mobil等字段。  
  三张表的关系是role对actor是一对多的关系,同时role对user也是一对多的关系。并且在actor.hbm.xml里分别设置role和user的inverse="true",cascade="save-update"结果是编译运行时显示两条sql语句,insert   actor....。insert   user.....。并没有显示插入role的sql语句,而且三张表里都没有数据插入。  
            如果我设置actor.hbm.xml的cascade="none"则只能在actor表里插入数据!郁闷!  
   
   
   
  向高手求救了! 问题点数:0、回复次数:13Top

1 楼007remember(绿原)回复于 2005-04-05 12:20:10 得分 0

路过  
  学习ing  
  帮您顶  
  Top

2 楼julian_zzx(竹十一)回复于 2005-04-05 13:48:33 得分 0

一个role多个user,为了存储合适的关系,要先save的是role;同理role和actor时save的也先是role。当然对many的也要save。  
  还有session.flush()也别忘了。Top

3 楼SInoyew(天行杨)回复于 2005-04-05 13:50:54 得分 0

学习!Top

4 楼talenty(残越)回复于 2005-04-05 13:54:36 得分 0

学习。。顶。。Top

5 楼vssivl(克斯)回复于 2005-04-11 18:00:24 得分 0

bang   upTop

6 楼smallyi(编程菜鸟)回复于 2005-04-13 11:48:50 得分 0

在hibernate.properties   文件看看   hibernate.fetch_max_size   是多少,把它改为2试试Top

7 楼smallyi(编程菜鸟)回复于 2005-04-13 11:51:14 得分 0

记错了,应该是这个max_fetch_depthTop

8 楼whobillion(whobillion)回复于 2005-04-14 23:27:46 得分 0

同意   julian_zzx(竹十一)Top

9 楼smallyi(编程菜鸟)回复于 2005-04-19 15:01:13 得分 0

我上面说错了,不好意思!  
  我最近亲自试了一下,三张表级联插入是没有问题的;Hibernate的cascade设计是方便级联插入,删除,更新,如果象julian_zzx(竹十一)所说的那样就不用cascade这个设置了。  
  inverse和cascade是没有必然的联系的;  
  父类是要设置cascade="all|save-update"的,  
  外键一定要设置正确,也就是set中keyTop

10 楼sjg008(基本靠UP)回复于 2005-04-24 22:21:46 得分 0

学习Top

11 楼discolt(枫)回复于 2005-04-25 22:41:15 得分 0

每个类的cascade=all,有一对多的   inverse不要设为   true   就行了。Top

12 楼public_super_man()回复于 2005-04-25 22:52:13 得分 0

我写的一个,你看看吧  
  <set  
                          name="roles"  
                          table="user_role"  
                          lazy="false"  
                          inverse="false"  
                          cascade="save-update"  
                          sort="unsorted"  
                  >  
   
                              <key  
                                      column="username"  
                              >  
                              </key>  
   
                              <many-to-many  
                                      class="com.haoe.model.Role"  
                                      column="role_name"  
                                      outer-join="auto"  
                                />  
   
                  </set>Top

13 楼darkula(流浪街头的呆子)回复于 2005-04-26 09:04:36 得分 0

配置文件里设置:cascade=all  
  然后就是在SET属性时,将要SAVE的PO关联的属性填充好,再一个个SET进PO,最后SAVE这个PO时就能达到级联插入/更新的效果了  
  例如一个one-to-many关系的:    
  因为ONE关联MANY一方的属性是collection,所以在设置时,先填充MANY一方  
   
  manyPo.setName(xx);  
  manyPo.setAge(xx);  
   
  list.add(manyPo);  
   
  onePo.setAssMany(list);  
   
  dao.save(onePo);Top

相关问题

  • hibernate插入问题
  • spring+hibernate级联插入的问题,在线等...
  • 求救:hibernate组合主键不能级联插入的问题?
  • 为什么只能插入一个表(hibernate 一对多)
  • hibernate插入,修改出错
  • Hibernate一对一关系 对主表的插入问题,急??????解决就给分
  • 插入表请教。
  • 多表插入,多项插入问题
  • 初级提问:用hibernate插入一条数据(MySql),为什么原来的数据都没了?
  • 表格内插入表格

关键词

  • 字段
  • 数据
  • 属性
  • hibernate
  • 插入
  • 表里
  • actor
  • cascade
  • manypo
  • 表

得分解答快速导航

  • 帖主:sunbird2008

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo