[英]How to join three tables using a single table in hibernate?
我有三个表A
, B
和C
以及一个映射表A_B_C
,它具有所有三个表的外键和一些其他属性(假设X
, Y
)。 现在,我想在我的 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
的类来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
的映射。
我相信您正在寻找的更多是以下内容
http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/
连接表有一个额外的列
希望这篇文章有帮助
干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.