0

one to many/双方向の関係ではmany to one、クロステーブルの作成を避けるために、に追加@mappedByするか、注釈 @ManyToManyを追加します。@JoinColumn

それで、どれが最高ですか?

@mappedByPS:が Hibernate に他のテーブル ( many to one) がリレーションの更新を担当していることを伝えるために使用されることは知っています。

4

1 に答える 1

2

あなたは混乱しています。まずmappedBy、注釈ではありません。@OneToOne@OneToManyおよび@ManyToMany注釈の属性です。

その目的は常に同じです。関連付けが双方向の関連付けの場合、反対側にこの属性が必要です。そして、逆側がなければなりません。また、OneToMany アソシエーションの場合、逆側は One 側でなければなりません。

@JoinColumnとはあまり関係ありませんmappedBy。アソシエーションの所有者側 (またはアソシエーションが一方向の場合は一意側) で、アソシエーションが特定の結合列 (または必要に応じて外部キー) によってデータベースで実体化されていることを Hibernate に伝えるために使用されます。JoinColumn を指定しない場合、Hibernate はデフォルトのマッピングを使用します。

あなたの質問はまだあまり明確ではないので、結合テーブルを使用する OneToMany 単方向アソシエーションでのデフォルトのマッピングを避けたいと思います。これは一方向の関連付けであるため、mappedBy は関係ありません。ただし、 JoinColumn を使用して、結合テーブルではなく結合列を使用する必要があることを Hibernate に伝えることができます。

public class Car
    @OneToMany
    @JoinColumn(name = "car_id")
    private Set<Wheel> wheels;
}

これについては、JoinColumn javadocおよびHibernate のドキュメントに例を示して文書化されていることに注意してください。

于 2013-07-20T14:08:14.690 に答える