首页 > Web开发 > 详细

闲聊Hibernate中的inverse和cascade

时间:2014-11-12 14:59:44      阅读:310      评论:0      收藏:0      [点我收藏+]

小小的记录一下自己对这两个属性的理解。


假如有两个类

class Group{

private int id;

private Set<User> users  = new ... 

}


class User{

private int id;

private Group  group = new ..

}


他们之间是 一对多的关系   Group (1) ---> User (N) 


inverse   属性的意思是  是否维护 他们之间的关系 ,换句通俗的话来说就是  是否  设置 外键 group_id 的值

当我们在   

Group.hbm.xml  

<set  name="users" >

</set>   

默认inverse = false 也就是group是维护关系的

所以

 User   u = new User();

Group g = new Group();

Set set = new HshSet();

set.add(u);

g.setSet(set);


最后 session.save(g); 就可以了

然而却发现抛异常了,这时候就引出

cascade 了  级联

因为group关联了user,在保存group的时候 user 还不存在 ,所以group想设置外键 group_id的值也没办法,因为数据库不存在此条user记录

除非在 保存 group之前 先session.save(u) 

或者设置

cascade = "save-update"

这样就可以保存成功了



特别要注意的一点是

在 <many-to-one>这边是没有inverse的  因为hibernate 要求多得一方必须维护关系 

cascade不影响


以上代码都是随手敲的。。有些错误 。。能理解这两个属性的 意思就好


闲聊Hibernate中的inverse和cascade

原文:http://blog.csdn.net/cjaver/article/details/41043297

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!