基于连接表的单向一对多关联 应该优先被采用。请注意,通过指定unique="true",我们可以把多样性从多对多改变为一对多。

person.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.lixueli.business.model.Person" table="person">
<id name="id" column="PERSON_ID">
<generator class="native"></generator>
</id>
<property name="age"></property>
<property name="firstName"></property>
<property name="lastName"></property>
<set name="events" table="PERSON_EVENT" lazy="false">
<key column="PERSON_ID"></key>
<many-to-many column="EVENT_ID" class="com.lixueli.business.model.Event" unique="true"></many-to-many>
</set>
</class>
</hibernate-mapping>
Event.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.lixueli.business.model.Event" table="event">
<id name="id" column="EVENT_ID">
<generator class="native" />
</id>
<property name="date" type="timestamp" column="EVENT_DATE"/>
<property name="title" />
</class>
</hibernate-mapping>
这样便实现单向一对多关联:一个person可以对应多个Event,但一个Event只能对应一个Person.
本文介绍如何使用Hibernate配置单向一对多关联关系,通过指定unique属性实现从多对多到一对多的变化,并展示了person与Event的具体XML配置。
388

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



