Hiber配置之list困惑

有三个配置文件


JiveForum.hbm.xml


[该贴被shychair于2007年02月27日 18:01修改过]

<hibernate-mapping>
<class name="com.jive.common.pojo.JiveForum"
table="JiveForum"
discriminator-value="C">

<id name="forumID">
<generator class="increment"/>
</id>
<property name="name"/>
<property name="description" type="text"/>
<property name="modDefaultThreadVal"/>
<property name="modMinThreadVal"/>
<property name="modDefaultMsgVal"/>
<property name="modMinMsgVal"/>
<property name="modifiedDate"/>
<property name="creationDate"/>
<list name="threads" table="JiveThread" cascade="" lazy="true">
<key column="forumID"/>
<index column="threadID"/>
<element type="timestamp" column="modifiedDate"/>
</list>
<list name="messages" table="JiveMessage" cascade="" lazy="true">
<key column="forumID"/>
<index column="threadID"/>
<element type="timestamp" column="modifiedDate"/>
</list>
</class>
</hibernate-mapping>

[该贴被shychair于2007年02月27日 18:02修改过]
JiveThread.hbm.xml



<hibernate-mapping>
<class name="com.jive.common.pojo.JiveThread"
table="JiveThread"
discriminator-value="C">
<id name="threadID">
<generator class="increment"/>
</id>
<property name="forumID"/>
<property name="rootMessageID"/>
<property name="modValue"/>
<property name="rewardPoints"/>
<property name="creationDate"/>
<property name="modifiedDate"/>
<list name="messages" table="JiveMessage" cascade="" lazy="true">
<key column="threadID"/>
<index column="userID"/>
<element type="timestamp" column="modifiedDate"/>
</list>
</class>
</hibernate-mapping>
JiveMessage.hbm.xml



<hibernate-mapping>
<class name="com.jive.common.pojo.JiveMessage"
table="JiveMessage"
discriminator-value="C">
<id name="messageID">
<generator class="increment"/>
</id>
<property name="parentMessageID"/>
<property name="threadID"/>
<property name="forumID"/>
<property name="userID"/>
<property name="subject"/>
<property name="body"/>
<property name="modValue"/>
<property name="rewardPoints"/>
<property name="creationDate"/>
<property name="modifiedDate"/>
/class>
</hibernate-mapping>
出现一个错误:
Foreign key (FK2BC087D9B8782A17:JiveMessage [threadID])) must have same number of columns as the referenced primary key (JiveThread [forumID,threadID])
哪位大虾可以解释下么?JiveThread只有一个primary key呀?
另:去掉JiveThread.hbm.xml中的list映射是可以通过的
>key column="threadID"/
应该是messageID吧?
不是的,threadID是JiveMessage引用JiveThread的外键
主要问题是当JiveForum配置

<list name="threads" table="JiveThread" cascade="" lazy="true">
<key column="forumID"/>
<index column="threadID"/>
<element type="timestamp" column="modifiedDate"/>
</list>

时,似乎为JiveThread 添加了主键(联合主键?),导致
Foreign key (FK2BC087D9B8782A17:JiveMessage [threadID])) must have same number of columns as the referenced primary key (JiveThread [forumID,threadID])
Hibernate是否画蛇添足?理解可能有不正确的地方,欢迎各大虾指正
需要重新理清思路,重新整理模型关联,按照对象建立法则,去除不必要的关联,特别是双向关联,找出真正具备约束的高聚合。

个人认为forum这个对象不必再包含thread等关联关系了。