为什么休眠创建了一个单向一对多连接表?(why hibernate creates a join t

2019-07-05 18:15发布

为什么Hibernate将使用这些类连接表?

@Entity
public class CompanyImpl {
    @OneToMany
    private Set<Flight> flights;


@Entity
public class Flight {

我不想既不是连接表,也不是一个双向关联:(

Answer 1:

因为这是它是如何设计的,JPA规范告诉它映射这样的关联。 如果你想在飞行表的连接柱,使用

@Entity
public class CompanyImpl {
    @OneToMany
    @JoinColumn(name = "company_id")
    private Set<Flight> flights;
}

这是记录 。



Answer 2:

Hibernate使用的关联表来映射关系,而另一表其是许多侧不不是任何表中。 然后,它会创建一个映射器来代替。

该文件指出,使用@OneToMany和@ManyToMany可以在地图上集合,列表,地图和相关实体的集合。

如果不指定@JoinColumn,这是关于你的问题,一个单向一对多与连接表中。 表名是主表的名称,_的串联,另一侧的表名。 引用所有者表的外键的名称(s)是所有者表的连接,_和所有者主键列(一个或多个)的名称。

所以,如果你不想创建一个使用一个连接表(映射)到许多你可能要指定@JoinColumn。

@Entity
public class CompanyImpl {
    @OneToMany
     @JoinColumn(name=flights_id)
    private Set<Flight> flights;


@Entity
public class Flight {


文章来源: why hibernate creates a join table for unidirectional OneToMany?