非主键之间的休眠关系OneToMany

Posted

技术标签:

【中文标题】非主键之间的休眠关系OneToMany【英文标题】:Hibernate relationship OneToMany between non primary key 【发布时间】:2020-03-24 15:46:11 【问题描述】:

我有一个关于 Hibernate 的问题。

表格说明:

表 A : id, X 表 B : id, Y

属性 X 和 Y 不是主键。但是 A 和 B 之间的连接具有这些属性。

加入:A.X = B.Y

表 A 的出现是指表 B 的多次出现。

如何实现与 Hibernate 的这种关系? @JoinFormula ?

public class A 

  @Id
  private Long id;

  @OneToMany
  private List<B> listOfB;


public class B 

  @Id
  private Long id;

  private Integer Y;

提前致谢。

【问题讨论】:

【参考方案1】:

你可以这样做:

@Entity
public class B 

  @Id
  private Long id;

  @ManyToOne
  @JoinColumn(name = "Y", referencedColumnName = "X")
  private A aClass;


@Entity
public class A 

  @Id
  private Long id;

  @OneToMany(mappedBy = "aClass")
  private List<B> listOfB;

【讨论】:

以上是关于非主键之间的休眠关系OneToMany的主要内容,如果未能解决你的问题,请参考以下文章

@OneToMany 与非主键 Hibernate 的关系

数据库范式

数据库范式(1NF 2NF 3NF BCNF)

如何通过非主键创建一对一关系(EF First Code)

实际项目开发中数据库设计那些事

Mysql