繁体   English   中英

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

[英]How to join three tables using a single table in hibernate?

我有三个表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的类来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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM