Hibernate 级联更新问题

killerso 2010-11-12 10:44:08
我用Hibernate 做了一对多的级联,
父表 cascade="all" lazy="false" inverse="true" 让父表负责级联关系。
子表 fetch="select" cascade="none" lazy="false"

用的是struts1.2 spring2.0 hibernate3.0框架。

问题是我现在可以级联增加,级联删除,就是更新不了。

前台做更新修改操作后,后台也可以获取到这个已操作数据。
hibernate也显示了两条更新语句
可是子表就是没有更新,这可怎么办啊!????是不是还要在配置什么参数呢?
我以前用struts2.0做没这个情况啊,现在这个公司必须要用1.2,个人觉得1.x特别不灵活。
...全文
92 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
killerso 2010-11-13
  • 打赏
  • 举报
回复
问题我差不多自己解决了。我是模仿struts2.0在form类里封装了一个子表对象集合,并可以在页面用类似“list[0].name”这样的方式调用(这个方法是我在网上找的。)这样就可以在一个表单里提交一个父表和多个子表数据,问题就出在这个list里装的子表对象已经不是从数据库里得到的子表对象了,但是属性是一样的。那么在操作更新的时候就hibernate就会报错说有不同的对象拥有相同的id主键值。
我现在做的是把这个list里的值取出来,付给从数据库里取到的值,然后就可以更新了,好死板。
这样做的缺点是我在页面里删掉了list[1]的数据,那么在数据库里仍然有list[1]。这样就没法做到删掉这条子表数据了。
quwanglai 2010-11-12
  • 打赏
  • 举报
回复
你在子表中设置了lazy,又在父表中说设置了lazy。问题可能在这里。
还有一个办法最保险,就是更新时将子表中的相对应的数据删除,在将修改的数据插入就ok!
iKing 2010-11-12
  • 打赏
  • 举报
回复
你的lazy设置可能有问题
lovest317 2010-11-12
  • 打赏
  • 举报
回复
语句提交了吗...
killerso 2010-11-12
  • 打赏
  • 举报
回复
来个人那!!!!!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧