1つのエンティティ(親である)に2つの列と、他のエンティティで4つの列を持つ複合主キー私は親の複合主キーの2つの列を参照して複合主キーの一部である子の2列を持つ外部キーを作成したい。子供の列は主キーの一部です私はそれを作ることができません "insertable = false、updatable = false" 次に、プライマリキーがnull例外になることはありません。主キー(EclipseLINK)の一部である複合外部キーとの関係
@Entity
@IdClass (MyKey.class)
@Table (name = "Child_Table")
public class Child {
@Id
@XmlElement (name = "C_feild1", required = true)
protected String C_feild1;
@Id
@XmlElement (name = "C_feild2", required = true)
protected String C_feild2;
@Id
@XmlElement (name = "C_feild3", required = true)
protected String C_feild3;
@Id
@XmlElement (name = "C_feild4", required = true)
protected String C_feild4;
//getters and setters
}
@Entity
@IdClass (MyKey2.class)
@Table (name = "Parent_Table")
public class Parent {
@Id
@CascadeOnDelete
@XmlElement (name = "P_feild1", required = true)
protected String P_feild1;
@Id
@XmlElement (name = "P_feild2", required = true)
protected String P_feild2;
//getters and setters
}
は、私はちょうど下記のように、これらのエンティティ間での関係を作成したい
のALTER TABLE Child_Table
のADD CONSTRAINT fk_child_table_parent_table
FOREIGN KEY(C_field1
、C_field2
)DELETE ON REFERENCES Parent_Table
(P_field1
、P_field2
) カスケード;
テーブルを個別に更新できるようにし、親が削除されたときに子ローを削除します。
EclipseLinkのCascadeOnDeleteをJPAに他の行/エンティティを削除する必要があることを伝えていないため、基本的なマッピングが必要です。あなたはそれを使用できるように、親と子の関係を設定する必要があります。 https://www.eclipse.org/eclipselink/documentation/2.5/jpa/extensions/a_cascadeondelete.htm – Chris