親テーブル(1)と関係する子テーブル(N)を関係性を持たせ新規登録
// 親テーブル用Dao private ParentDao parentDao; // 子テーブル用Dao private ChildDao childDao; protected void doLogic() { // 親テーブルを登録 Parent parent = new Parent(); parent.setParentid("999"); parentDao.persist(parent); // 子テーブルを登録 数分繰り返し処理 for (int i = 0; i < 10; i++) { Child child = new Child(); child.setChildid("ABC" + i); // 親テーブルPkeyを直に設定しない // child.seParent_pkey(11111); // 親entitiyをセット child.setParentt(parent); childDao.persist(child); } }子entity(N側)の親entityPkeyは、個別に設定しないようにする。 個別に設定しないように制約を付けるには、Columnアノテーションで insertable、updatableにfalseを設定することによって、 リレーションentitiyによる追加、更新以外を防ぐことが可能。
@javax.persistence.Entity @javax.persistence.Table(name = "child") public class Child { ・・・ @javax.persistence.ManyToOne(targetEntity = Parent.class ,fetch = FetchType.LAZY) private Parent parent; @javax.persistence.Column(name = "parent_pkey", insertable = false, updatable = false) private Integer parent_pkey; ・・・ }
0 件のコメント:
コメントを投稿