您的位置:首页 > 其它

hibernate一对一对应关系

2015-12-03 22:15 363 查看
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” 也没有什么作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: