1

私は Eclipselink を使用しており、セカンダリ テーブルの使用に問題があります。以下のように2つのテーブルがあります。

  1. Student_id(Primary Key)、student_name などの列を持つ学生。

  2. 列 Student_id (Student テーブルとの FK 関係)、course_name (not null 制約付き) などでの登録。

要件は、学生が登録を持っている場合と持っていない場合があります。学生が登録している場合、データは登録テーブルにも保持する必要があります。それ以外の場合は、Student テーブルのみを永続化する必要があります。

私のコードスニペットは以下の通りです。

Student.java
------------

@Entity
@Table(name = "STUDENT")
@SecondaryTable(name = "REGISTRATION")

@Id
@Column(name = "STUDENT_ID")
private long studentId;

@Basic(optional=true)
@Column(name = "COURSE_NAME", table = "REGISTRATION")
private String courseName;

次のシナリオを試しました。1. 登録済みの学生 - 正常に動作しています。Student テーブルと Registration テーブルの両方にデータが追加されます。

セカンダリ テーブルへの永続化を防ぐ方法はありますか?

どんな助けでも大歓迎です。

ありがとう!!!

4

1 に答える 1

0

@Eelke が述べているように、最善の解決策は、2 つのクラスと OneToOne 関係を定義することです。

場合によっては、追加のテーブルを追加する Student と RegisteredStudent を持つ継承を使用することもできます。しかし、関係ははるかに優れた設計です。

于 2013-06-26T13:28:16.960 に答える