(SSH)怎样用 HibernateDaoSupport save 一对多(双向)

来源:百度知道 编辑:UC知道 时间:2024/06/25 04:59:15
1、我建立了表:t_bbs(一的一端) 和 t_rebbs(多的一端).
其中 t_rebbs的bbs_id是外键 也是t_bbs的主键

2、再创建了两个类:bbs 和 rebbs.
bbs里设置了private Set rebbes;
rebbs设置了private bbs bbsu;
3、这两个类的 <set>和<many-to-one>标签也设置了
4、我是这样调用他们的:
流程 a.jsp --> b.jsp --> action --> c.jsp
a.jsp里把bbs里的属性显示出来(这时的bbs里还没有任何rebbs的东西),
这时我来到b.jsp里在文本框里,添加了rebbs的属性后再提交到 action里
调用rebbs.setbbs(把当前bbs通过request传递过来);
然后用Dao类.save(rebbs); //用debug发现就到这一句抛了异常。
//我也试过先把rebbs保存到Set里 再把Set保存到bbs里结果也不行;
希望各位大侠能救助小弟 小弟感激不尽
得先谢谢2 楼的大哥 可是还有问题 虽然不报异常了可是Spring没有存入数据里
应该多的一端的外键立刻就有这一的一端的主键 可是我一查里面外键的部分是空的 并没有关联
具体的源码我放到里我的空间里了 http://hi.baidu.com/聪头/blog (包括汉字)
拜托了!!

set.add(rebbsu);前rebbsu保存完属性后一定要set一下bbs!很重要
rebbsu.setBbs(bbs);再试试楼主,不行hi我
*********************************************************************
在set标签中设置inverse=true,由bbs来控制两者关系,

这样保存然后
BBs bbs=new BBs();
bbs.set属性...

Rebbs rebbs=new Rebbs();
rebbs.set属性...
rebbs.setBbs(bbs);
bbs.getRebbes.add(rebbs);

然后保存,再试试楼主

占个位,关注一下。

首先,不报错的原因肯定是你的rebbs对象配置<many-to-one>时没有设置not-null属性,把not-null设置为真就会报错的。你想啊,一个回复的外键BBS肯定是不能为空的!
上面的大哥说的很好,在你保存之前必须双向都吧对象属性添加进去。既要bbs.setRebbs();
然后rebbs.setBbs();
因为你说双向关联的,所以两边都必须添加。
然后再save(bbs);应该没什么问题了

在你的表映射文件里有关联的属性中加上
cascade="all"
然后才可以级联更新

我现在不清楚你出了什么异常 连异常都不贴是没办法解决问题的