映射文件如下。
many-to-many的关系 只在这个映射文件里有,也就是单向关联。save 一个 event 后,再save 一个event 的subevent 会创建关联表subeventrelation的记录。但问题是:通过getHibernateTemplate().update(event);时,会把该event在关联表中对应的关系也一并删除了。从打印的sql中可以看到,先执行update,然后执行delete。请教:这是什么原因呢?是不是many-to-many配置不当,该如何正确配置, 谢谢!
<?xml version="1.0" encoding="utf-8"?>
<!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.ccps.model.event.Activity" table="Activity">
<id name="id">
<generator class="identity" />
</id>
<property name="name"></property>
<property name="description"
type="org.springframework.orm.hibernate3.support.BlobStringType"></property><joined-subclass name="com.ccps.model.event.Event"
table="Event" extends="com.ccps.model.event.Activity">
<key column="id" />
<property name="level"></property>
<set name="sponsorships" table="ActivitySponsorshipRelation">
<key column="activity_id" />
<many-to-many column="sponsorship_id" unique="true"
class="com.ccps.model.event.Sponsorship" />
</set>
<set name="subevents" table="SubeventRelation" cascade="all">
<key column="event_id" not-null="true" />
<many-to-many column="subevent_id"
class="com.ccps.model.event.Event" />
</set>
<set name="documents" table="ActivityDocumentRelation" cascade="all-delete-orphan">
<key column="activity_id" />
<many-to-many column="document_id" unique="true"
class="com.ccps.model.common.Document" />
</set>
<set name="hotels" table="EventHotelRelation" cascade="save-update">
<key column="event_id" />
<many-to-many column="hotel_id" unique="true"
class="com.ccps.model.event.Hotel" />
</set>
<set name="registrations" table="ActivityPlayerRelation">
<key column="activity_id" />
<composite-element
class="com.ccps.model.event.ActivityPlayerRelation">
<parent name="activity" />
<many-to-one name="player" column="player_id"
class="com.ccps.model.account.Player"></many-to-one>
</composite-element>
</set>
</joined-subclass>
<joined-subclass name="com.ccps.model.event.EventSession"
table="EventSession" extends="com.ccps.model.event.Activity">
<key column="id" />
<property name="startTime" column="start_time"></property>
<property name="endTime" column="end_time"></property>
</joined-subclass>
</class>
</hibernate-mapping>