親テーブル(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 件のコメント:
コメントを投稿