@ManyToOne单向多对一

单向多对一实现有两种方式:注解方式和XML配置方式,代码如下:

一、注解方式:

Grade.java

package cn.siggy.pojo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "GRADE")
public class Grade {
	private int id;
	private String name;
	// Property accessors
	@Id
	@GeneratedValue
	@Column(name = "ID", unique = true, nullable = false, precision = 10, scale = 0)
	public Integer getId() {
		return this.id;
	}
	public void setId(Integer id) {
		this.id = id;
	}

	@Column(name = "NAME")
	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

}
Student.java

package cn.siggy.pojo;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "STUDENT")
public class Student {
	private Integer id;
	private String name;
	private Integer age;
	private Grade grade;
	// Property accessors
	@Id
	@GeneratedValue
	@Column(name = "ID", unique = true, nullable = false, precision = 10, scale = 0)
	public Integer getId() {
		return this.id;
	}
	
	public void setId(Integer id) {
		this.id = id;
	}

	@Column(name = "NAME")
	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	@Column(name = "AGE", precision = 10, scale = 0)
	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}


	@ManyToOne(cascade=CascadeType.REFRESH,optional=false)
    @JoinColumn(name="GRADE_ID",  nullable = false)  
	public Grade getGrade() {
		return grade;
	}
	public void setGrade(Grade grade) {
		this.grade = grade;
	}
}
hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<!--数据库信息  -->
		<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="connection.url">jdbc:oracle:thin:@10.18.100.126:1521:gsdb</property>
		<property name="connection.username">db_lzsmw</property>
		<property name="connection.password">pass_lzsmw</property>
		<!--hibernate可选项 -->
		<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		<property name="hbm2ddl.auto">update</property>
		<!-- hbm文件 -->
		<mapping class="cn.siggy.pojo.Grade"/>
		<mapping class="cn.siggy.pojo.Student"/>
	</session-factory>
</hibernate-configuration>

二、XML配置方式

Grade.java

package cn.siggy.pojo;

import java.util.HashSet;
import java.util.Set;

public class Grade {
	private int id;
	private String name;
	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;
	}
}

Grade.hbm.xml

<?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="cn.siggy.pojo">
	<class name="Grade">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="name"/>
	</class>
</hibernate-mapping>

Student.java

package cn.siggy.pojo;

public class Student {
	private int id;
	private String name;
	private int age;
	private Grade grade;
	
	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 int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public Grade getGrade() {
		return grade;
	}
	public void setGrade(Grade grade) {
		this.grade = grade;
	}
}
Student.hbm.xml

<?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="cn.siggy.pojo">
	<class name="Student">
		<id name="id">
			<generator class="native"></generator>
		</id>
		<property name="name"/>
		<property name="age"/>
		<!-- 多对一   name:属性名   class:指明属性对应的类   column:指数据库表中对应的列明 -->
		<many-to-one name="grade" class="Grade" column="grade_id"/>
	</class>
</hibernate-mapping>
hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<!--数据库信息  -->
		<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="connection.url">jdbc:oracle:thin:@10.18.100.126:1521:gsdb</property>
		<property name="connection.username">db_lzsmw</property>
		<property name="connection.password">pass_lzsmw</property>
		<!--hibernate可选项 -->
		<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		<property name="hbm2ddl.auto">update</property>
		<!-- hbm文件 -->
		<mapping resource="cn/siggy/pojo/Student.hbm.xml"/>
		<mapping resource="cn/siggy/pojo/Grade.hbm.xml"/>

		<!-- 使用注解 -->
		<!--<mapping class="cn.siggy.pojo.Grade"/>
		<mapping class="cn.siggy.pojo.Student"/>-->
	</session-factory>
</hibernate-configuration>


以下数据库表由程序自动创建:






猜你喜欢

转载自blog.csdn.net/ljj2312/article/details/72691255
今日推荐