4

私のアプリケーションには、次のStudentエンティティがあります。

@Entity
public class Student extends Commenter implements Serializable {
    ...
    @OneToMany
    private List<Coupon>   coupons;
    @OneToMany
    private List<Receipt>  receipts;
    @ManyToMany
    private List<Course>   courses;
    @ManyToMany
    private List<Sessions> sessions;
    ...
}

アプリをローカルにデプロイすると、すべて正常に動作します。ただし、サーバーにアプリをデプロイしたとき、結合テーブルstudent_couponと結合テーブルstudent_receiptは作成されませんでした。

データベース全体を削除してすべてのテーブルを再作成しようとしましたが、上記の 2 つのテーブルが作成されなかった理由がわかりません。ただし、他の結合テーブル (student_sessionsおよびstudent_course) は常に正しく作成されます。

アドバイスをいただければ大変助かります。

よろしくお願いします、

4

1 に答える 1

1

あなたが言うことについては、あなたは他の2つのエンティティ(クーポンとレシート)と多対多の関係を持っていると思いますが、あなたはそれらを「1対多」の関係としてマークしたので、結合テーブルはありませんでした。代わりに、関係フィールドに@ManyToManyアノテーションを付ける必要があります(他の2つのフィールドで行ったように)。

@Entity
public class Student extends Commenter implements Serializable {
    @ManyToMany  //Changed this
    @JoinTable(name = "student_coupon",
    joinColumns = {@JoinColumn(name="studentId")},     //This could be omitted 
    inverseJoinColumns = {@JoinColumn(name="couponId")} //and left defaults
    private List<Coupon>   coupons;
    @ManyToMany //and this
    @JoinTable(name = "student_receipt",
    joinColumns = {@JoinColumn(name="studentId")},
    inverseJoinColumns = {@JoinColumn(name="receiptId")}
    private List<Receipt>  receipts;
    @ManyToMany
    private List<Course>   courses;
    @ManyToMany
    private List<Sessions> sessions;
}
于 2012-08-10T00:15:42.187 に答える