Student(学生)和Document(学籍)存在一对一关系
Student.java
/**
*
*/
package com.hb.jo;
/**
* @author dudong0726
*
* @date 2011-11-8 下午04:36:25
*
*/
public class Student {
private long id;
private String name;
private String email;
private Document doc;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Document getDoc() {
return doc;
}
public void setDoc(Document doc) {
this.doc = doc;
}
}
Document.java
/**
*
*/
package com.hb.jo;
/**
* @author dudong0726
*
* @date 2011-11-8 下午04:37:19
*
*/
public class Document {
private long id;
private String number;
private Student stu;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public Student getStu() {
return stu;
}
public void setStu(Student stu) {
this.stu = stu;
}
}
student.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.hb.jo.Student" table="student">
<id name="id" column="stu_id">
<generator class="foreign">
<param name="property">doc</param>
</generator>
</id>
<property name="name"></property>
<property name="email"></property>
<one-to-one name="doc" class="com.hb.jo.Document" constrained="true"></one-to-one>
</class>
</hibernate-mapping>
document.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.hb.jo.Document" table="document">
<id name="id" column="doc_id">
<generator class="native"></generator>
</id>
<property name="number"></property>
<one-to-one name="stu" class="com.hb.jo.Student"></one-to-one>
</class>
</hibernate-mapping>
需要注意的地方:
1、为保证两个关联的表中id的一致,需要在其中一个表中的id作为外键,其生成策略使用和他关联表的id;
2、需要在有外键的表中指定 constrained = 'true',来明确指定通过外键对主键进行关联;此字段影响save和delete的先后顺序,因为其id生成需要与其关联表的主键,所以每次save先save关联的表,在查询关联表的id作为id;在删除时和save相反。
本文介绍了一个Java应用中学生实体与学籍实体的一对一关系实现方式,包括具体的类定义、属性设置及Hibernate配置文件。重点在于如何确保两个关联表中的ID一致,并通过外键实现主键关联。
3540

被折叠的 条评论
为什么被折叠?



