以下のようにまだテーブルに登録されていない担当者をつかって顧客に関連づけてみます。
Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); User user = new User(); user.setName("担当者1"); Customer customer = new Customer(); customer.setName("顧客1"); customer.setUser(user); session.save(customer); tx.commit(); session.close();
Customer.hbm.xmlのmany-to-oneの設定が
<many-to-one name="user" class="nu.mine.kino.entity.User" fetch="select">
というようにカスケード指定がない場合、
org.hibernate.TransientObjectException: nu.mine.kino.entity.User
という例外が発生します。
<many-to-one name="user" class="nu.mine.kino.entity.User" fetch="select" cascade="save-update">
とカスケード指定すると、まずは「担当者1」を登録後、「顧客1」を登録しにいきます。「担当者1」を明示的にsaveする必要はないって事ですね。
この記事は
現在のアクセス:9846