1

netbeans IDE を使用して JEE6 を使い始めたばかりで、今は toplink で JPA を学んでいます。Netbeans IDE と mySQL を使用しています。

多対多の関係を持つ 2 つの非常に単純なテーブルを作成しました。

table student
int id PK
varchar name

table teacher
int id PK
varchar name

//the mapping
table studentTeacher
int studentID FK
int teacherID FK

StudentTeacher テーブルは、削除と更新のカスケードを使用して、Students ID を Teachers ID にマップします。

「データベースからエンティティを生成する」netbeans 機能を使用しましたが、正常に動作します。Student オブジェクトを Student テーブルに追加し、Teacher オブジェクトを Teacher テーブルに追加できます。

問題は、「studentTeacher」エンティティを作成して永続化するにはどうすればよいですか? それとも、すでに IDE によって行われていますか?

以下は、Netbeans から自動生成された注釈です。

 //Student Entity annotation generated by Netbeans 7.0.1

 @Id
 @Basic(optional = false)
 @NotNull
 @Column(name = "id")
 private Integer id;
 @Size(max = 40)
 @Column(name = "name")
 private String name;
 @JoinTable(name = "studentTeacher", joinColumns =
 {
    @JoinColumn(name = "studentID", referencedColumnName = "id")
 }, inverseJoinColumns =
 {
    @JoinColumn(name = "teacherID", referencedColumnName = "id")
 })
 @ManyToMany
 private Collection<Teacher> teacherCollection;

ありがとう!

4

1 に答える 1

4

正しく言えば、それはすでにJPA実装によって行われています。あなたの場合はTopLinkです。エンティティはそれ自体がエンティティではないため、エンティティは必要ありません。StudentTeacherこれは、多対多の関係をモデル化するためにエンティティリレーショナルスキームで必要とされる補助テーブルにすぎません。

との関係StudentTeacher両方のエンティティの外部キー以外の追加の属性がある場合は、追加のエンティティが必要になりますが、既存のエンティティ(StudentおよびTeacher)は多対多の関係ではなく、1対多の関係になります。その仲介StudentTeacherエンティティとの多対多。

私のアドバイスですが、モデルが例のように単純な場合は、そのままにしておきます。

于 2012-04-06T23:06:10.003 に答える