一、一对一关联(有共享主键关联和惟一外键关联两种)
1、共享主键关联
比如课题是由教师去任教,没有教师就没有课题,这样课题就可以完全由教师来决定。
Java示例代码如下:
publicclass Course {
private Long id;
private String name;
private Teacher teacher;
// 省略setter和getter 方法
}
publicclass Teacher {
private Long id;
private String name;
private Course course;
// 省略setter和getter 方法
}
配置文件
Teacher.hbm.xml
<!-- cascade="all" 表明对Teacher对象CRUD的操作会级联到Course对象
-->
<one-to-one
name="course" class="powerwind.bean.Course"
cascade="all" />
Course.hbm.xml
<!-- id值参照 teacher属性而生成-->
<id name="id" type="java.lang.Long" column="id">
<generator
class="foreign">
<param
name="property">teacher</param>
</generator>
</id>
<!-- teacher属性参照 -->
<one-to-one
name="teacher" class="powerwind.bean.Teacher"
constrained="true" />
2、惟一外键关联
外键关联需要一个定义外键字段,比如在教师表定义一个课题的外键 course_id。
配置文件
Teacher.hbm.xml
<many-to-one
name="course" class="powerwind.bean.Course"
column="course_id" cascade="save-update"
unique="true"/>
如果同时在Coure.hbm.xml加上如下配置则为双向关联。
<one-to-one name="teacher"
class="powerwind.bean.Teacher"
property-ref="course"
/>