作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有三个表 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
的类映射来处理:
@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/
我是一名优秀的程序员,十分优秀!