java - Hibernate:将表连接到连接表注释

标签 java sql hibernate

如何为以下情况创建注释:

Table A
id
name

Table B
id
name

Table C
id
name

Table AB
a_id
b_id

Table ABC
id
a_id
b_id
c_id
name

如何使用注释在 hibernate 上表示表 ABC?

表 AB 不是一个对象,它用作表 A 和 B 之间的表联接。

A 和 B 的注释看起来像这样:

对于A:

@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="AB",  
joinColumns={@JoinColumn(name="a_id", referencedColumnName="id")},  
inverseJoinColumns={@JoinColumn(name="b_id", referencedColumnName="id")})  
private Set bs;

对于B:

@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="AB",  
joinColumns={@JoinColumn(name="b_id", referencedColumnName="id")},  
inverseJoinColumns={@JoinColumn(name="a_id", referencedColumnName="id")})  
private Set as;

提前致谢。

最佳答案

我会做类似的事情:

答:

@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.LAZY)
@JoinTable(name = "AB", joinColumns = @JoinColumn(name = "A_ID",
        referencedColumnName = "ID"), inverseJoinColumns = @JoinColumn(name = "B_ID",
        referencedColumnName = "ID"))
private List<B> bs;

B 也一样。

ABC:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "A_ID")
private A a;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "B_ID")
private B b;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "C_ID")
private C c;

关于java - Hibernate:将表连接到连接表注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26099301/

相关文章:

java - 需要在等待函数上下文中实现 Thread.sleep(100) 来评估 sleep 时间?

java - JSF 弹出页面到父(开启)页面

java - 为什么 eclipse 告诉我静态方法引用 ClassName::staticMethod 应该为 "accessed in a static way"?

php - MySQL 查询不工作 PHP

postgresql - JPA/hibernate/PostgresDB 和 Vaadin 8 : SQL select query to get data from inherited tables and show in Vaadin grid

java - 使用 Jongo 使用 MongoDB 从 Person 集合中展开 $unwind 地址

mysql - 我可以创建一个 MYSQL select 语句,其中的列包含在另一个 select 语句中吗?

sql - 如何在MS Access中使用VBA将值插入数据库表

java - Hibernate 在 SQL 查询中显示问号

java - JPA CriteriaQuery 实现 Spring Data Pageable.getSort()