Hibernate 一对一关系

在需要添加外键字段(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>

猜你喜欢

转载自blog.csdn.net/tangbin0505/article/details/82081429