在one to many
/many to one
双向关系中,为了避免创建交叉表,我要么添加@mappedBy
到,要么@ManyToMany
添加@JoinColumn
注释。
那么哪一个是最好的呢?
PS:我知道这@mappedBy
是用来告诉Hibernate另一个表(many to one
)负责更新关系。
在one to many
/many to one
双向关系中,为了避免创建交叉表,我要么添加@mappedBy
到,要么@ManyToMany
添加@JoinColumn
注释。
那么哪一个是最好的呢?
PS:我知道这@mappedBy
是用来告诉Hibernate另一个表(many to one
)负责更新关系。
你很困惑。首先,mappedBy
不是注解。@OneToOne
它是,@OneToMany
和@ManyToMany
注解的一个属性。
它的目的总是一样的:当关联是双向关联时,反面必须有这个属性。并且必须有相反的一面。在 OneToMany 关联的情况下,反面必须是单面。
@JoinColumn
没有太大关系mappedBy
。它用于关联的所有者方(或唯一方,如果关联是单向的),告诉 Hibernate 该关联是通过给定的连接列(或外键,如果您愿意)在数据库中实现的。如果不指定 JoinColumn,Hibernate 将使用默认映射。
您的问题仍然不是很清楚,因此我假设您希望避免 OneToMany 单向关联中的默认映射,其中包括使用连接表。由于它是单向关联,因此 mappedBy 无关紧要。但是您可以简单地使用 JoinColumn 告诉 Hibernate 它必须使用连接列而不是连接表:
public class Car
@OneToMany
@JoinColumn(name = "car_id")
private Set<Wheel> wheels;
}
请注意,这在JoinColumn javadoc和Hibernate 文档中以示例的形式记录在案。