由于两个实体类是一对一的关系,因此可以设置两个实体类使用相同的主键。相对的,具有相同注解的实体被视为一对一的关系,这样两个表就省略了外键关联。
demo实例
客户地址管理,一个客户对应一个地址,实体间使用相同的主键。
1、建立java工程
2、导入hibernate和MySql相关类库。
详见之前的博客hibernate单边一对多关系中的配置。
3、建立实体类
Customer为客户的实体类,Address为客户的地址实体类;
两个实体类之间是一对一的属性,两者之间使用相同的主键而没有使用外键约束。
配置时使用OneToOne指定一对一关系,使用@PrimaryKeyJoinColumn指定两个实体类之间使用相同的主键。
客户的实体类Customer.java代码如下:
package com.arvinfei.hibernate.bean;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
@Entity
@Table(name = "tb_customer")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
@OneToOne
@PrimaryKeyJoinColumn
private Address address;
public Address getAddress() {
return addr