1 组件作为联合标识符
组件作为联合标识符,但是必须要实现Serializable接口,必须重写equals()和hashCode方法。第二点非强制的,但是官方文档中提出推荐最好重写。
1.1 如下例子,分数表主键由学生id和课程ID联合组成。
public class StudentCourse{
/**
* 联合主键
*/
private StudentCourseId studentcourseid;
private Integer score;
//省略get。set方法
public class StudentCourseId implements Serializable {
private static final long serialVersionUID = 1L;
private Integer courseid;
private Integer studentid;
//省略get。set方法
将联合主键映射到StudentCourse表中:
<class name="StudentCourse" table="student_couse">
<composite-id name="studentcourseid" class="StudentCourseId">
<key-property name="studentid"/>
<key-property name="courseid"/>
</composite-id>
<property name="score"/>
</class>
测试代码:
public void insert01(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
StudentCourse studentCourse=new StudentCourse();
StudentCourseId studentCourseId=new StudentCourseId();
studentCourseId.setCourseid(1);
studentCourseId.setStudentid(1);
studentCourse.setStudentcourseid(studentCourseId);
studentCourse.setScore(1);
session.save(studentCourse);
tx.commit();
}
未完待续。。。