在使用單向一對多mapping,一種簡單的作法是在「many」的一方中的table中的某一個欄位用來儲存「one」一方的主鍵,如果以下方範例來說, Address表中有一欄叫personId是Person表中的主鍵。
create table Person ( personId bigint not null primary key )
create table Address ( addressId bigint not null primary key, personId bigint not null )
取自Hibernate reference Documentation 3.3.2.GA, 7.2.3
set 要加上 cascade="all" or cascade="save-update"
當我們在儲存Person物件(含有Address)的時候,hibernate可以自動幫我們將Person的主鍵填入Address表的personId欄位中而不需要手動寫程式。
關鍵在Person的mapping document上
key column中 not-null="true" 的這個設定。
create table Person ( personId bigint not null primary key )
create table Address ( addressId bigint not null primary key, personId bigint not null )
取自Hibernate reference Documentation 3.3.2.GA, 7.2.3
set 要加上 cascade="all" or cascade="save-update"
當我們在儲存Person物件(含有Address)的時候,hibernate可以自動幫我們將Person的主鍵填入Address表的personId欄位中而不需要手動寫程式。
關鍵在Person的mapping document上
key column中 not-null="true" 的這個設定。
public class OneToMany { public static void main(String[] args){ Address add1 = new Address(); Address add2 = new Address(); Person p1 = new Person(); p1.sets(new HashSet()); p1.getAddresses().add(add1); p1.getAddresses().add(add2); Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session.beginTransaction(); session.save(p1); // cascade tx.commit(); session.close(); } }
留言