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表中:
测试代码:
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(); }