hibernate级联更新如何配置:自引用(本表外键即本表主键)

魅惑之眼 2013-08-21 08:03:33
如题,我想了一天也没解决。
大概意思就是我有一张表,有个唯一索引是本表编号id,还有个字段是上级编号sid,那么这个sid就是外键了,关联的主键就是本表的id了。
问题来了,首先我不会在hibernate里配置主外键关联,所以我只是写好pojo和.hbm.xml然后生成这个表,最后在数据库中设置了sid为外键,关联的是id,然后再delete选项选择了set null。
于是乎,我可以实现级联删除了。也就是我在页面上删除了上级编号sid,对应的下级编号id所对应的所有数据的sid都清空为null。这说明级联删除成功(当然,我这不是删除,是set null了)。
可是问题又来了,既然级联删除可以成功,为何我在数据库中设置update为Cascade(级联更新),但是在页面中,我把sid修改了,按理说对应的id所有结果的sid都应该自动修改,可是我却报错。
以上就是第一个问题了,谁能告诉我为什么,难道是数据库出问题(mysql)?还是说自引用不支持级联更新?
第二个问题,我由于不会写.bhm.xml的主外键级联配置,上面说了我是在数据库中设置的,为了知道怎么配置,于是我先写数据库表,然后逆向生成了pojo和.hbm.xml文件。可是生成后我发现和我写的很不一样。。
首先pojo里,就只有id了,根本就没有sid了,然后还多了一个本实体类属性,和实体类集合属性。
其次,hbm.xml文件里<many to one>和<one to many>里到时出现了sid,可是这样一来action里就没有sid字段了,我就没法在页面填写sid了啊。。
谁能帮帮我?有人说可以不设置为外键,用程序控制。
...全文
131 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
魅惑之眼 2013-08-23
  • 打赏
  • 举报
回复
引用 2 楼 hch020940623 的回复:
你说的也就是一中树形结构
对啊对啊,就是树形结构,可是为什么本表自连接的主外键,不能级联更新呢? 我试过两个关联表的级联更新删除都好用,只有自连接级联更新报错
Adolph11 2013-08-23
  • 打赏
  • 举报
回复
你说的也就是一中树形结构
hippoppower 2013-08-21
  • 打赏
  • 举报
回复
你为啥这么喜欢文字描述呢 直接把异常信息 配置文件 POJO类 测试代码都po上来

62,614

社区成员

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

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