此文章部分参看:https://blog.csdn.net/lzm1340458776/article/details/32155365
hibernate 一对一主键关联有一对一双向主键关联和单向主键关联,本文章仅介绍一对一双向主键关联
step1:建表
建立 people 和 idcard 两个表,如下图:
people 表中,id属性既为主码也为外码,而外码中设置 on update 和 on delete 为 CASCADE
此外,设置了idcard的id属性为自增,而people的id属性不设自增(仅作记录。对于结果应该没有影响)
利用 idea 自动生成相关类文件和配置文件,经过修改后,各相关文件内容如下:
People.java
package com.wyx.mapping.one_to_one;
import javax.persistence.*;
import java.util.Objects;
@Entity
public class People {
private int pid;
private String name;
private Idcard idcard;
@Id
@Column(name = "pid", nullable = false)
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
@Basic
@Column(name = "name", nullable = false, length = 45)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
People people = (People) o;
return pid == people.pid &&
Objects.equals(name, people.name);
}
@Override
public int hashCode() {
return Objects.hash(pid, name);
}
@OneToOne(mappedBy = "people")