您的位置:首页 > 其它

Hibernate关联映射

2010-08-06 14:27 176 查看
如果是<many-to-one>则其后面的name属性为“one”的一方
如果是<one-to-many>则其后面的name属性为“many”的一方

双向 一对多关联== 单向一对多+单向多对一;
1.单向多对一:
在实体类里将多的一方(Blog类)的外键 userId换成Users类的user
在配置文件Blog.hbm.xml里添加
<many-to-one name="user" //name属性对应的是Blog类里的user(即刚刚改过来的那个)
class="edu.myblog.ssh.entity.Users">
<column name="user_id" /> //user_id为blog表里的外键
</many-to-one>

2.单向一对多:
配置一对多关联时,set节点要加一个inverse(反转)属性 一般设为true即由对方(多方)管理双方的关联关系

在为“一”的方(相对于“一对多”中的“多”来说)即Users类中实例化一个Set类型的对象blog 即:Set blogs=new HashSet();

在配置文件Users.hbm.xml里添加
<set name="blogs"> //name属性为 Users类即“一”方中实例化的那个Set对象
<key column="user_id" /> //column属性为多的一方的外键
<one-to-many class="edu.myblog.ssh.entity.Blog"/>//注意class的路径
</set>

3.多对多:

多对多关系中,多采用中间表来关联两个有多多关系的表的.如下Courses.hbm.xml文件:

<set name="stu" table="stu_course_tec"> <!--table 就是中间表,在数据库中建立的联系表-->
<key column="cid" /> <!--key中的column是中间表中字段,应该也可以说是中间表中的外键,对应的是该映射文件中的主健-->
<many-to-many class="Student" column="sid" /> <!--column是中间表中字段-->

</set>

Student.hbm.xml文件:

<set name="course" table="stu_course_tec">
<key column="sid" />
<many-to-many class="entity.Courses" column="cid" />
</set>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: