hibernate單向1-1無表連接級聯

單向級聯1-1無表連接級聯映射配置:

1、創建數據庫

創建address表

創建person表

2、在hibernate中使用反向工程建立他們對應的實體類

創建address的實體類

package com.wxb.model;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * PersonInf entity. 
 * @author 王校兵
 * @version 1.0, 2015-11-27
 */
@Entity
@Table(name = "address_inf")
public class AddressInf implements java.io.Serializable {

	// Fields

	private Integer addressId;
	private String addressDetial;

	
	// Constructors

	/** default constructor */
	public AddressInf() {
	}

	/** minimal constructor */
	public AddressInf(String addressDetial) {
		this.addressDetial = addressDetial;
	}

	// Property accessors
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "address_id", unique = true, nullable = false)
	public Integer getAddressId() {
		return this.addressId;
	}

	public void setAddressId(Integer addressId) {
		this.addressId = addressId;
	}

	@Column(name = "addressDetial", nullable = false)
	public String getAddressDetial() {
		return this.addressDetial;
	}

	public void setAddressDetial(String addressDetial) {
		this.addressDetial = addressDetial;
	}

}
創建person的實體類

package com.wxb.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.OneToOne;

import static javax.persistence.GenerationType.IDENTITY;

import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

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

/**
 * PersonInf entity.
 * 
 * @author 王校兵
 * @version 1.0, 2015-11-27
 */
@Entity
@Table(name = "person_inf")
public class PersonInf implements java.io.Serializable {

	// Fields

	private Integer personId;
	private Integer age;
	private String name;
	private AddressInf addressInf;

	// Constructors

	/** default constructor */
	public PersonInf() {
	}

	/** full constructor */
	public PersonInf(AddressInf addressInf, Integer age, String name) {
		this.addressInf = addressInf;
		this.age = age;
		this.name = name;
	}

	// Property accessors
	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "person_id", unique = true, nullable = false)
	public Integer getPersonId() {
		return this.personId;
	}

	public void setPersonId(Integer personId) {
		this.personId = personId;
	}

	/*
	 * 單向多對一
	 * 
	 * @ManyToOne(fetch = FetchType.LAZY)
	 * 
	 * @JoinColumn(name = "address_id", nullable = false)
	 * 
	 * @Cascade(CascadeType.ALL)
	 */

	// 定義該Person實體關聯的Address實體
	@OneToOne(targetEntity = AddressInf.class)
	// 映射名爲address_id的外鍵列,參照關聯實體對應表的addres_id主鍵列
	@JoinColumn(name = "address_id", referencedColumnName = "address_id", unique = true)
	@Cascade(CascadeType.ALL)
	public AddressInf getAddressInf() {
		return this.addressInf;
	}

	public void setAddressInf(AddressInf addressInf) {
		this.addressInf = addressInf;
	}

	@Column(name = "age", nullable = false)
	public Integer getAge() {
		return this.age;
	}

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

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

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

}
創建測試類
<pre name="code" class="java">package com.wxb.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.wxb.model.AddressInf;
import com.wxb.model.PersonInf;
import com.wxb.util.HibernateSessionFactory;
/**
 * hibernate單向一對一映射測試類
 * @author 王校兵
 * @version 1.0, 2015-11-27
 * */
public class SingleOneToOneDao {
	public static void main(String[] args) {
		Session session = HibernateSessionFactory.getSession();
		Transaction ts = session.beginTransaction();
		
		PersonInf p = new PersonInf();
		
		AddressInf a = new AddressInf("asdf");
		
		p.setName("123");
		p.setAge(12);
		p.setAddressInf(a);
		
		session.persist(p);
		
		
		
		ts.commit();
	}
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章