Hibernateフレームワーク-04-02-Hibernate1対1アソシエーションマッピングアノテーションフォーム構成


主キーの関連付けのマッピング

user.java

ここに画像の説明を挿入

package com.hibernate.entity;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;

import org.hibernate.annotations.GenericGenerator;


//表示要进行持久化操作
@Entity
public class User {
    
    
	private Integer id;
	private String userName;
	private String password;
	//关联关系
	private Person person;
	

	@Id
	@GeneratedValue(generator = "my_gen")
	@GenericGenerator(name="my_gen",strategy = "increment")
	public Integer getId() {
    
    
		return id;
	}
	public void setId(Integer id) {
    
    
		this.id = id;
	}
	
	@Column(name="user_name")
	public String getUserName() {
    
    
		return userName;
	}
	public void setUserName(String userName) {
    
    
		this.userName = userName;
	}
	
	//属性名与列明一致,可以省略
	public String getPassword() {
    
    
		return password;
	}
	public void setPassword(String password) {
    
    
		this.password = password;
	}
	
	//一对一关联关系,括号里是级联操作,参数是常量
	@OneToOne(cascade = CascadeType.ALL)
	//既是主键又是外键的字段
	@PrimaryKeyJoinColumn(name="id")
	public Person getPerson() {
    
    
		return person;
	}
	public void setPerson(Person person) {
    
    
		this.person = person;
	}
	@Override
	public String toString() {
    
    
		return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", person=" + person + "]";
	}	
}

ここに画像の説明を挿入

Person.java

package com.hibernate.entity;

import javax.persistence.Column;
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;


//表示这要映射实体类
//属性table(“--”),如果数据库表与类名一致,可以省略
@Entity(name = "hibernate_04_01_person")
public class Person {
    
    
	private Integer id;
	private String realName;//真实姓名
	private String idNumber;//身份证号码
	//关联到User
	private User user;
	

	@Id
	@GeneratedValue(generator = "my_gen")
	@GenericGenerator(name="my_gen",strategy = "foreign",parameters = @Parameter(name="property",value="user"))
	//一个参数便有一个Parament注解,后面括号里的是键值对信息
	public Integer getId() {
    
    
		return id;
	}
	public void setId(Integer id) {
    
    
		this.id = id;
	}
	
	@Column(name="real_name")
	public String getRealName() {
    
    
		return realName;
	}
	public void setRealName(String realname) {
    
    
		this.realName = realname;
	}
	
	@Column(name="id_number")
	public String getIdNumber() {
    
    
		return idNumber;
	}
	public void setIdNumber(String idNumber) {
    
    
		this.idNumber = idNumber;
	}
	
	//一对一映射关联
	//关联映射映射在了Person属性上了
	@OneToOne(mappedBy = "person")
	public User getUser() {
    
    
		return user;
	}
	public void setUser(User user) {
    
    
		this.user = user;
	}
	@Override
	public String toString() {
    
    
		return "Person [id=" + id + ", realname=" + realName + ", idNumber=" + idNumber + ", user=" + user + "]";
	}

	
	

}

一意の外部キーの関連付け

ここに画像の説明を挿入

User.java

package com.hibernate.entity;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

import org.hibernate.annotations.GenericGenerator;

@Entity(name="hibernate_04_02_user")
public class User {
    
    
	private Integer id;
	private String userName;
	private String password;
	//关联关系
	private Person person;
	
	
	
	
	@Id
	@GeneratedValue(generator = "linshi1")
	@GenericGenerator(name="linshi1",strategy = "increment")
	public Integer getId() {
    
    
		return id;
	}
	public void setId(Integer id) {
    
    
		this.id = id;
	}
	
	@Column(name="user_name")
	public String getUserName() {
    
    
		return userName;
	}
	public void setUserName(String userName) {
    
    
		this.userName = userName;
	}
	
	@Column(name="password")
	public String getPassword() {
    
    
		return password;
	}
	public void setPassword(String password) {
    
    
		this.password = password;
	}
	
	
	@OneToOne(cascade = CascadeType.ALL)
	//映射表中外键字段
	@JoinColumn(name="person_id")
	public Person getPerson() {
    
    
		return person;
	}
	public void setPerson(Person person) {
    
    
		this.person = person;
	}
	@Override
	public String toString() {
    
    
		return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", person=" + person + "]";
	}
	
}

ここに画像の説明を挿入

Person.java

package com.hibernate.entity;

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

import org.hibernate.annotations.GenericGenerator;

@Entity(name="hibernate_04_02_person")
public class Person {
    
    
	private Integer id;
	private String realName;//真实姓名
	private String idNumber;//身份证号码
	//关联到User
	private User user;
	
	
	
	
	@Id
	@GeneratedValue(generator="linshi")
	@GenericGenerator(name="linshi",strategy = "increment")
	public Integer getId() {
    
    
		return id;
	}
	public void setId(Integer id) {
    
    
		this.id = id;
	}
	
	@Column(name="real_name")
	public String getRealName() {
    
    
		return realName;
	}
	public void setRealName(String realname) {
    
    
		this.realName = realname;
	}
	
	@Column(name="id_number")
	public String getIdNumber() {
    
    
		return idNumber;
	}
	public void setIdNumber(String idNumber) {
    
    
		this.idNumber = idNumber;
	}
	
	@OneToOne(mappedBy = "person")
	public User getUser() {
    
    
		return user;
	}
	public void setUser(User user) {
    
    
		this.user = user;
	}
	@Override
	public String toString() {
    
    
		return "Person [id=" + id + ", realname=" + realName + ", idNumber=" + idNumber + ", user=" + user + "]";
	}

	
	

}

おすすめ

転載: blog.csdn.net/qq_44627608/article/details/114593262