gpt4 book ai didi

java - 如何在 hibernate 中使用单个表连接三个表?

转载 作者:搜寻专家 更新时间:2023-10-31 19:54:12 26 4
gpt4 key购买 nike

我有三个表 ABC 以及一个映射表 A_B_C,它具有外键所有三个表和一些其他属性(比如 XY)。现在,我想在我的 java 类中加入代表这三个表。

这些表之间的关系是一对多的。因此,我希望我的 Java 类看起来像这样。

@Entity(name = "A")
@Table(name = "A")
public class A {

??? Hibernate Annotation or query
Map<B,List<C>> BMapC;
}

@Entity(name = "B")
@Table(name = "B")
public class B {
...
}

@Entity(name = "C")
@Table(name = "C")
public class C {
...
}

我想知道是否可以为此利用 Hibernate Annotations。如果没有,有没有办法编写自定义查询并填充变量?

最佳答案

不幸的是,hibernate 没有为这种情况提供任何开箱即用的注释。这种情况只能通过创建到 A_B_C 的类映射来处理:

@Entity
@Table(name = "A_B_C")
public class name = "A_B_C" {

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "FK_B", nullable = false)
private B b;

@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "FK_C", nullable = false)
private C c;

//Getters, Setters, other attributes etc.
}

并且在 A 中有这个对象的列表:

 @Entity
@Table(name = "A")
public class name = "A" {

@OneToMany(cascade=CascadeType.ALL)
@JoinColumn(name = "FK_A", nullable = false)
private Set<A_B_C> abc;

//Getters, Setters, other attributes etc.
}

并以编程方式将 Set abc 转换为 B,C 的映射。

关于java - 如何在 hibernate 中使用单个表连接三个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31472440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com