双向一对多,首先还是在“一”方配置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);
本文介绍了一种在对象关系映射(ORM)中实现双向一对多关联的方法。通过配置XML文件,将关联关系维护设置为由多方负责,并使用级联操作简化了数据持久化的流程。
763

被折叠的 条评论
为什么被折叠?



