为什么hibernate为这些类使用连接表?
@Entity
public class CompanyImpl {
@OneToMany
private Set<Flight> flights;
@Entity
public class Flight {
我既不想要连接表也不想要双向关联:(
答案 0 :(得分:12)
因为它是如何设计的,以及JPA规范告诉它如何映射这样的关联。如果您想要Flight表中的连接列,请使用
@Entity
public class CompanyImpl {
@OneToMany
@JoinColumn(name = "company_id")
private Set<Flight> flights;
}
答案 1 :(得分:2)
Hibernate使用关联表来映射关系,而作为多面的另一个表并不存在任何表。然后它将改为创建一个映射器。
文档指出,使用@OneToMany和@ManyToMany可以映射关联实体的集合,列表,地图和集合。
如果您不指定@joincolumn,则与您的问题有关,将使用单向一对多连接表。表名是所有者表名_和另一方表名的串联。引用所有者表的外键名称是所有者表_和所有者主键列名称的串联。
因此,如果您不想使用一对多创建联接表(映射器),则可能必须指定@joinColumn。
@Entity
public class CompanyImpl {
@OneToMany
@JoinColumn(name=flights_id)
private Set<Flight> flights;
@Entity
public class Flight {