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

时间:2015-07-17 09:22:34

标签: java hibernate jpa

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

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

Y

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

2 个答案:

答案 0 :(得分:8)

不幸的是,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

的地图

答案 1 :(得分:-1)

我相信你所寻找的更多是以下

[http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/][1]

其中连接表有一个额外的列

希望这篇文章有所帮助

干杯