私はインターンシップのためにJPA準拠キットを作成しています...そのキットの一部には、コーナーケースの正しい実装のテストが含まれています。@ ManyToMany/@ OneToMany bidirectionalアソシエーション用のmappedby属性
@ManyToMany
にはmappedBy属性があります。
String mappedBy - 関係を所有するフィールドまたはプロパティ。関係が一方向でない場合は必須です。
んが、デフォルトが指定されていない - デフォルトの列は空です。双方向@ManyToMany
考える
- この例では、JPA 2.0 JSR-317の仕様自体からです!
カスタマー
@ManyToMany
@JoinTable(name="CUST_PHONES")
public Set<PhoneNumber> getPhones() { return phones; }
のPhoneNumber
@ManyToMany(mappedBy="phones")
public Set<Customer> getCustomers() { return customers; }
mappedBy属性はCustomer
の@ManyToMany
で定義されていません!私が気付いていない双方向マッピングのデフォルトがありますか?
私は似たようなケースを見ていないとが見つかりました: @OneToOne
- mappedByはオプションで、デフォルト @OneToMany
から@ManyToMany
とまったく同じ(mappedByにはデフォルトで、双方向のためのオプションです)要するに
、私の質問:@ManyToMany
と@OneToMany
については は、関係(例でCustomer
)の所有側のためのmappedBy属性に何を配置する必要がありますか?
適合キットは、JPAで使用される注釈の単体テストの単なる名です。今は、ORMに焦点を当てています...これらのユニットテスト(またはそれらのラインに沿った他のもの)がすでに存在しているとお考えですか?インターンシップをしている会社は、オープンソースアプリケーションのテストの一環としてこれを開発したいと考えています。 私は 'mappedBy'の使い方をちょっと理解していますが、私はちょうどその正確な言葉遣いについて混乱しています。なぜ、双方向関係の所有側を排除せずに非単方向関係にmappedBy注釈が必要であると言うのでしょうか? – Pimgd
TCKは、JPA実装をテストするために使用されます。 JPAで構築されたアプリケーションのテストには使用されません。だからあなたのキットは役に立つかもしれないと思います。開発者が怠け者であり、アノテーションのユーザーがJPA仕様、またはmappedBy属性の使用について詳細に説明されているアノテーション自体のjavadocを読んでいると考えたためです。 –
"ここで、mappedBy属性の使用について詳しく説明しています。このドキュメントへのリンクを教えてください。私はそれをオンラインで見つけることができますが、私はJSR-317仕様で読むことができるように思われます。この特定の状況については何も明らかにしていません。 – Pimgd