hibernate一對一對應關係

1
首先我先建立三個表:Student(學生),Lab(實驗室),Part(黨)
Student:
這裏寫圖片描述
Lab:
這裏寫圖片描述
Part:

這裏寫圖片描述

假如黨員都是學生,因此在黨員這個表中爲了讓每一個黨員對應一個學生,我們在黨員這個表中添加來學生的studentID,這樣就可以讓學生和黨員一一對應起來.

Student類:

public class Student {
private int studentID;
private String studentName;

public int getStudentID() {
    return studentID;
}

public void setStudentID(int studentID) {
    this.studentID = studentID;
}

public String getStudentName() {
    return studentName;
}

public void setStudentName(String studentName) {
    this.studentName = studentName;
}

}

Part類:

public class Part {
    private int partID;
    private Student student;

    public int getPartID() {
        return partID;
    }

    public void setPartID(int partID) {
        this.partID = partID;
    }

    public Student getStudent() {
        return student;
    }

    public void setStudent(Student student) {
        this.student = student;
    }
}

Student配置文件:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="model">
    <class table="Student" name="Student">
        <id name="studentID" column="studentID" type="int">
            <generator class="increment"></generator>
        </id>
        <property name="studentName" column="studentName" type="string"></property>
        <one-to-one name="part" class="Part" property-ref="student" cascade="all"></one-to-one>
    </class>

</hibernate-mapping>

Part配置文件:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="model">
    <class table="Part" name="Part">
        <id name="partID" column="partID" type="int">
            <generator class="increment"></generator>
        </id>

        <many-to-one name="student" column="studentID" class="Student"></many-to-one>
    </class>

</hibernate-mapping>
        Configuration configuration=new Configuration();
        configuration.configure("hibernate-cfg.xml");
        SessionFactory sessionFactory=configuration.buildSessionFactory();
        Session session=sessionFactory.openSession();
        Transaction transaction=session.beginTransaction();
        Student student=new Student();
        student.setStudentName("student");
        Part part=new Part();
        part.setStudent(student);
        student.setPart(part);
        session.save(part);
        session.save(student);
        transaction.commit();

經過測試我發現這樣設置了外鍵關聯,但是隻實現來部分外鍵關聯,即使我在配置文件當中加入來cascade=”all” 也沒有什麼作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章