一对多关系表中的设置为 cascade="none",已经设置了不联动,为何还是会联动。inverse是默认值。
Hibernate: update systemforbookmanager.userinfor set userName=?, userAge=?, userAddress=?, userPhone=?, userSex=? where userID=?
Hibernate: update systemforbookmanager.lentbook set userID=null where userID=?
我在<set>元素中添加了inverse="true",就没有更新第二个表了,cascade是控制联动的,inverse是设置由谁
管理双方的关联关系,我这里只是不想联动,为何还要设置inverse=“true”?
你设置cascade="none"即说明 你不想在操作userinfo的时候去级联操作对应的lentbook,这个级联操作仅仅代表的是把对主对象的操作(save,update,delete)施加于关联对象,和对象的关系维护是没有任何关系的;
你设置inverse=true,代表让主对象(userinfo)放弃对从对象(lentbook)的关系维护,即代表当主对象和从对象之间的关联关系发生了变化(即一个lentbook关联到了userinfo,或者一个lentbook放弃和了userinfo的关联),这个关联的变化主对象(userinfo)不需要槐判改去维护,这个冲祥关系只需要从对象(lentbook)来维护就行了,
所以,你说的更新一个表顺带更新另一个表,对于cascade和inverse的含义是不同的,casacde代表的是顺带操作另一个表(CUD),而inverse代表的是顺带维护另一个表中的关系外键。请分清楚两者的不同。
如果你还有什么疑问,你可以看一下我个人说明里面的资料,希铅判望对你有用。
Hibernate :cascade维护级联操作, inverse维渣含护关让羡系 ,inverse值为true (不维护关如滑笑系);flase(维护关系); 默认(default)是维护关系