@OneToMany
注釈は、デフォルトでは、mappedBy
要素が指定されていない限り、結合表を作成します。@OneToManyに対して、HibernateがデフォルトでJoin Tableを作成するのはなぜですか?
この動作の理由は何ですか?たとえば、次のエンティティを持つ:
@Entity
public class User {
// ...
@OneToMany
private List<UserDocument> documents;
// ...
}
@Entity
public class UserDocument {
// ...
@ManyToOne
private User user;
// ...
}
単に休止しない理由User
実体について:
- は
UserDocument
エンティティ上で反射を実行して、タイプUserDocument
でUser
を持つフィールドを検索します。 @OneToMany
注釈の値をmappedBy
と推測しますか?
これを実行せず、デフォルトの動作として結合テーブルを生成する理由は何ですか?なぜHibernate(JPA)はこのように設計されていますか? UserDocument
関係 - この背後にある
こんにちは。 @OneToManyアノテーションのmappedByの値を推測するとはどういう意味ですか?また、Hibernateが与えられたエンティティ(id)を計算するという意味でデザインを作成するという意味でHibernateが "やっている"ことについて話しているときは、明確ではありません。つまり、 "find"/"infer"より明確に編集してください。すべてを明確に参照するのに十分な言葉と文章を使用してください。 PS答えは、テーブル上の抽象オペレーションと特定の場合にそれらがどのように組み合わされているかを区別することです。また、注釈ごとのドキュメンテーション・マッピング・モデルを表に読み込みます。 – philipxy
なぜ、JPA SPECはそれを1-NのDEFAULTとして命令しますか?それはそうだから。 JPA仕様を読んでください。それは "mappedBy"とは関係ありません。それは '@ JoinColumn'がないためです。 – DN1
@philipxy私はデザインの意思決定について話しています。なぜ、Hibernate(あるいはむしろJPA)がこのように設計されているのですか? – Utku