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” 也没有什么作用。

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