Hibernate一对多映射(注解方式解决)

实体类

主表Drivers.java

package com.minde.po;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.SequenceGenerator;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;

@Entity	    //定义实体类映射,代表定义一个默认为Drivers的映射类名
public class Drivers {
	private int driverid; 
	private String drivername; 
	private String drivertype; 
	private String driverno; 
	private int driveryear; 
	private String status;
	private Cars cars;
	
	public Drivers() {
		super();
	}
	@Id
	@GeneratedValue(generator="a",strategy=GenerationType.SEQUENCE)	//使用下面定义的序列值
	@SequenceGenerator(name="a",sequenceName="seq_drivers")	//定义序列来自于数据库seq_drivers
	public int getDriverid() {
		return driverid;
	}
	public void setDriverid(int driverid) {
		this.driverid = driverid;
	}
	@OneToOne(fetch=FetchType.EAGER)		//FetchType.EAGER代表立即加载
	@Cascade({CascadeType.ALL})				//代表级联进行增、删除、改操作
	@PrimaryKeyJoinColumn					
	public Cars getCars() {
		return cars;
	}
	public void setCars(Cars cars) {
		this.cars = cars;
	}
	
	public String getDrivername() {
		return drivername;
	}
	public void setDrivername(String drivername) {
		this.drivername = drivername;
	}
	public String getDrivertype() {
		return drivertype;
	}
	public void setDrivertype(String drivertype) {
		this.drivertype = drivertype;
	}
	public String getDriverno() {
		return driverno;
	}
	public void setDriverno(String driverno) {
		this.driverno = driverno;
	}
	public int getDriveryear() {
		return driveryear;
	}
	public void setDriveryear(int driveryear) {
		this.driveryear = driveryear;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	
	
}

从表Cars.java

package com.minde.po;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

@Entity
public class Cars {
	private int cid; 
	private String carno; 
	private String cartype; 
	private int cartons; 
	private int caryears;
	private Drivers drivers;
	
	public Cars() {
		super();
	}
	@Id
	@GenericGenerator(name="s",strategy="foreign",
	parameters={@Parameter(name="property",value="drivers")}) //定义当前表的主键以外键方式生成,使用的
	//是属性为drivers的表的主键
	@GeneratedValue(generator="s")			//使用了上面表定义的主键生成策略
	public int getCid() {
		return cid;
	}
	public void setCid(int cid) {
		this.cid = cid;
	}
	@OneToOne(mappedBy="cars")		//配置一对一映射 ,mappedBy代表此表(cars)是从表,关系由对方Drivers
	//方来维护,所以Drivers有主控制权,这是最重要的。
	public Drivers getDrivers() {
		return drivers;
	}
	public void setDrivers(Drivers drivers) {
		this.drivers = drivers;
	}
	public String getCarno() {
		return carno;
	}
	public void setCarno(String carno) {
		this.carno = carno;
	}
	public String getCartype() {
		return cartype;
	}
	public void setCartype(String cartype) {
		this.cartype = cartype;
	}
	public int getCartons() {
		return cartons;
	}
	public void setCartons(int cartons) {
		this.cartons = cartons;
	}
	public int getCaryears() {
		return caryears;
	}
	public void setCaryears(int caryears) {
		this.caryears = caryears;
	}

	
	
}

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="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
		<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
		<property name="hibernate.connection.username">scott</property>
		<property name="hibernate.connection.password">tiger</property>
		<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
		<property name="show_sql">true</property>
		<!-- 添加注解的两个映射类 -->
		<mapping class="com.minde.po.Drivers"/>
		<mapping class="com.minde.po.Cars"/>
	</session-factory>
</hibernate-configuration>


最重要的就是上面的配置,其余的和之前做过的一样



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值