论坛首页 Java企业应用论坛

hibernate cascade 烦人的地方

浏览 4601 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-07-25  
比如 我有一个 水笔类

由笔帽,笔管,笔芯组成

我可以设置 cascade = delete

那么在我要进行销毁这个水笔的业务的时候.

会连同笔帽,笔管,笔芯都删掉.

但是我并不是都需要全删掉啊

比如在我要进行资源回收业务,水笔没了,但是笔帽,笔管,笔芯 还都留着.

那咋办?

难道只有 打破关系. set笔管(null) ,set笔芯(null)这样再 delete 水笔?

难道没有语句可以动态的设置 cascade?

这是我认为Hibernate 比较烦人的地方.
   发表时间:2013-10-25  
哪有十全十美的产品?软件永远都不会满足全部需求。自己了解它并能用其他方式去弥补它的不足就可以了。我们很多项目都不设置hibernate级联操作,全用代码来维护。
0 请登录后投票
   发表时间:2013-10-28  
看来楼主用hibernate时间不长,对hibernate的理解很有限啊!!!
0 请登录后投票
   发表时间:2013-11-21  
为什么要设置delete, 设置成save-update不就不会删除级联了
0 请登录后投票
   发表时间:2014-01-19  
常规做法是维护的时候设定好值就可以了,如果你是替换模式,那可以设定为删除孤儿,把笔芯换成新的笔芯,旧的因为没哟引用就被删掉了哦。
0 请登录后投票
   发表时间:2014-02-19  
应该没有其他方法。你可以不用级联,在保存水笔对象的时候,直接用他们的id与水笔进行关联
0 请登录后投票
   发表时间:2014-03-11  
但是我在 业务1,2,3,4,5 的时候需要 cascade = delete
我在 业务6,7,8,9,10 的时候需要 cascade = none
我在 业务11,12,13,14,15 的时候需要 cascade = insert,update
怎么破?
0 请登录后投票
   发表时间:2014-03-11  
px96004 写道
但是我在 业务1,2,3,4,5 的时候需要 cascade = delete
我在 业务6,7,8,9,10 的时候需要 cascade = none
我在 业务11,12,13,14,15 的时候需要 cascade = insert,update
怎么破?


你这个已经是属于业务逻辑的范畴了。

比如10年以上的笔就是直接全部销毁,5年以上可以留个笔管,5年以下全留。

这就很明显是因为业务而导致的,我相信换谁来设计hibernate都不会有动态cascade出来的吧。

解决方法肯定就是只能自己写了,不管用if还是什么策略模式,反正是根据业务逻辑处理了
0 请登录后投票
   发表时间:2014-04-27  
这种情况一般是写HQL了。
0 请登录后投票
   发表时间:2014-04-28  
且学且珍惜,得认学习真正消化
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics