java - 如何在 Hibernate 中通过第三个实体将一个实体连接到第二个实体?

标签 java sql spring hibernate

我想给 C 一个对 A 实例的引用,但 A 拥有的只是 B 实例的外键。B 拥有 C 实例的外键。下面是一个示例。

@Entity
public Class A {

  public int id;
  public Integer bId;

}

@Entity
  public Class B {
  public Integer id;
  public Integer cId;
}


@Entity
  public Class C {
  public A a;
  public Integer id;
}

如何在 Spring 中使用 Hibernate 注释来实现此目标?

最佳答案

我认为最小的实现应该是这样的(使用 JPA 2.x):

@Entity
class A {
    public Integer id;
    public Integer bId;
}

@Entity
class B {
    public Integer id;
    public Integer cId;

    @OneToMany
    @JoinColumn(name="bId")
    private Set<A> a;
}

@Entity
class C {

    public Integer id;
    @ManyToOne
    public A a;

    @OneToMany
    @JoinColumn(name="cId")
    private Set<B> b;

}

或者,如果您想依赖实体引用而不是 id:

@Entity
class A {
    public Integer id;

    @ManyToOne
    public B b;
}

@Entity
class B {
    public Integer id;

    @ManyToOne
    public C c;
}

@Entity
class C {
    public Integer id;

    @ManyToOne
    public A a;
}

关于java - 如何在 Hibernate 中通过第三个实体将一个实体连接到第二个实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39001415/

相关文章:

Java Scanner 获取输入,调用方法,然后返回读取更多输入不起作用

sql - SQL中是否有类似mysql_num_row的计数方法

MySQL - 用于日期比较的 Where 子句

java - Spring RestController 方法返回状态 403

java - 在 servlet-context 中的 dev 和 prod 值之间切换的标志

java - 如何从 Java 数组中删除对象?

java - 休息模板 HttpClientErrorException : 400 null on Post API

java - 静态方法有点代码味道?

sql - 选择多对多关系中的所有子集

java - 实现类中的 ClassCastException