码迷,mamicode.com
首页 > Web开发 > 详细

闲聊Hibernate中的inverse和cascade

时间:2014-11-12 15:01:13      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:hibernate

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


假如有两个类

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

标签:hibernate

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!