双向一对多,首先还是在“一”方配置one-to-many的set, 但一般都将关联关系维护交给“多”方(inverse="true"),如
xml代码
<set name="cards" inverse="true" cascade="all">
<key column="userId" /> <!-- Card表中指向User表的外键 -->
<one-to-many class="wintys.hibernate.onetomany.Card" />
</set>
在“多”方需配置many-to-one的class, 如
xml代码
<many-to-one name="user" column="userId" not-null="true" /> <!-- Card表中指向User表的外键 -->
一般仍将“一”方的级联设为all,这样保存“一”方对象即可保存其关联对象。
java代码
Card c = new Card(3650f);
c.setUser(user);
set cards = new hashset();
cards.add(c1);
user.setCards(cards);
session.save(user);
xml代码
<set name="cards" inverse="true" cascade="all">
<key column="userId" /> <!-- Card表中指向User表的外键 -->
<one-to-many class="wintys.hibernate.onetomany.Card" />
</set>
在“多”方需配置many-to-one的class, 如
xml代码
<many-to-one name="user" column="userId" not-null="true" /> <!-- Card表中指向User表的外键 -->
一般仍将“一”方的级联设为all,这样保存“一”方对象即可保存其关联对象。
java代码
Card c = new Card(3650f);
c.setUser(user);
set cards = new hashset();
cards.add(c1);
user.setCards(cards);
session.save(user);