在需要添加外键字段(cid)的表student(从表)对应的类中
定义一个属性Contact contact
在其setter方法上增加
@OneToOne
@JoinColumn(name="cid",unique=true)
这样只能实现单向一对一的关系
如果想实现双向一对一的关系
主表contact对应的类中
定义一个属性Student student
在其setter方法上增加
@OneToOne(mappedBy="contact")
Student.java
package model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
@Entity
@Table(name="student")
public class Student {
private int id;
private String name;
private String pwd;
private String phone;
private String grade;
private String photo;
private String sex;
private Contact contact;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getPhoto() {
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@OneToOne
@JoinColumn(name="cid",unique=true)
public Contact getContact() {
return contact;
}
public void setContact(Contact contact) {
this.contact = contact;
}
}
Contact.java
package model;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class Contact {
private int id;
private String name;
private String sex;
private String relation;
private String phone;
private Student student;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getRelation() {
return relation;
}
public void setRelation(String relation) {
this.relation = relation;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@OneToOne(mappedBy="contact")
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}
student.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="student" namespace="/student" extends="all">
<action name="*" class="action.StudentAction" method="{1}">
<result name="login">/login.jsp</result>
</action>
</package>
</struts>
contract.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="contact" namespace="/contact" extends="all">
<action name="*" class="action.ContactAction" method="{1}">
</action>
</package>
</struts>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="true"></constant>
<include file="student.xml"></include>
<include file="contact.xml"></include>
<include file="room.xml"></include>
<package name="all" namespace="/" extends="struts-default">
<global-results>
<result name="main">/main.jsp</result>
</global-results>
</package>
</struts>
hibernate.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<hibernate-configuration>
<session-factory >
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/curricula</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">update</property>
<mapping class="model.Student"/>
<mapping class="model.Contact"/>
<mapping class="model.Room"/>
</session-factory>
</hibernate-configuration>