0

one to many/many to one双向关系中,为了避免创建交叉表,我要么添加@mappedBy到,要么@ManyToMany添加@JoinColumn注释。

那么哪一个是最好的呢?

PS:我知道这@mappedBy是用来告诉Hibernate另一个表(many to one)负责更新关系。

4

1 回答 1

2

你很困惑。首先,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 javadocHibernate 文档中以示例的形式记录在案。

于 2013-07-20T14:08:14.690 回答