hibernate中实体关联的注解写法

1、一对一的单向外键关联

     例如有两个实体类Husband、Wife,其中husband中有三个属性id、name和Wife类型的wife;Wife中有三个属性id、name和age,那么在Husband中的注解如下(在Wife中

只需要进行实体和id的注解就行):

@Entity
public class Husband {

 private int id;
 private String name;
 private Wife wife;
 @Id
 @GeneratedValue
 public int getId() {
  return id;
 }
     此处省略其他属性的get,set方法
 @OneToOne
 @JoinColumn(name="wife_id")

 public Wife getWife() {
  return wife;
 }
 public void setWife(Wife wife) {
  this.wife = wife;
 }
 
}
其中的红色注解@OneToOne表示一对一的外键关联,黑色加粗注解@JoinColumn(name="wife_id")为指定外键字段为wife_id。

2.一对一的双向外键关联

   此时需要在Wife中增加一个Husband类型的husband属性,并生成get、set方法,在public Husband getHasband(){}上添加注解@OneToOne但是此时会在数据库表中的

Husband和Wife中都会生成互相依赖对方的外键,产生数据冗余,这时候我们需要指定一方为主表,那么注解就可以这么写@OneToOne(mappedBy="wife")其中

mappedBy指定的wife表示被Husband的getWife()中的wife映射。

3.一对一的单向主键关联(不重要,实际项目中用的很少很少)此时把1中@OneToOne@JoinColumn(name="wife_id")改为@PrimaryKeyJoinColumn即可

4.一对一的双向主键关联(不重要,实际项目中几乎不用)与2中一样在Wife中增加一个Husband类型的husband属性,并生成get、set方法,在public Husband getHasband(){}

上添加注解@OneToOne和@PrimaryKeyJoinColumn

5.一对一的联合主键外键关联(用的不多)

 还是之上的两个类,比如Wife中的id、name为联合主键,这时候需要给其建立一个主键类WifePK 

public class WifePK implements Serializable{

 private int id;
 private String name;
 
 public int getId() {
  return id;
 }
 public void setId(int id) {
  this.id = id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
}

这时候需要在Husband类上边添加@IdClass(WifePK.class),wife属性上如下写注解

@OneToOne
 @JoinColumns
 (
   {
    @JoinColumn(name="wife_id",referencedColumnName="id"),
    @JoinColumn(name="wife_name",referencedColumnName="name")
   }
 )
public Wife getWife() {
  return wife;
}

接下来的一对多,多对一在下一篇介绍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值