Hibernate--元件

BtWangZhi發表於2017-09-11

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();
    }

未完待續。。。

相關文章