我知道這應該是一個非常基本的問題來解決,但1)我相對較新的Hibernate,和2)我找到的修復程序不(似乎)適用於此處。Hibernate:未映射的類關聯異常
這是我收到的例外:
org.hibernate.MappingException: An association from the table POSTS refers to an unmapped class: com.beans.User at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1285)
當Hibernate試圖配置本身發生這種情況。
我正在使用的對象是用戶,帖子(抽象超類),狀態和註釋(Post的具體子類)。每個bean都來自兩個表中的一個:USERS和POSTS。用戶對象很漂亮:很多描述用戶的平淡的字段。除了類似無聊的字段外,狀態和評論都擁有所有者(發佈它的用戶)。從什麼評論區分一個狀態是一個狀態可以附加,但沒有父親的評論列表,而評論沒有孩子的職位,但有一個父(是的,這基本上是Facebook的)。
從我讀過的,這個問題似乎在多對一的映射中,但我似乎無法找到任何錯誤。這裏是我使用的三個配置文件。
的hibernate.cfg.xml:
<hibernate-configuration> <session-factory> ... <!-- mapped persistence classes --> <mapping resource="User.hbm.xml" /> <mapping resource="Post.hbm.xml" /> </session-factory> </hibernate-configuration>
User.hbm.xml:
<hibernate-mapping> <class name="com.beans.User" entity-name="User" table="USERS" proxy="User"> <id name="uid" type="java.lang.Integer"> <column name="uid" /> <generator class="assigned" /> </id> ... </class> </hibernate-mapping>
Post.hbm.xml:
<hibernate-mapping>
<class name="com.beans.Post" entity-name="Post" table="POSTS" proxy="Post" abstract="true">
<id name="pid" type="java.lang.Integer">
<column name="pid" />
<generator class="assigned" />
</id>
<discriminator column="type" />
<one-to-one name="parent" class="com.beans.Post"></one-to-one>
<many-to-one name="owner" class="com.beans.User" update="false" fetch="select">
<column name="owner" />
</many-to-one>
<property name="postDate" type="java.sql.Timestamp" update="false">
<column name="post_date" />
</property>
<property name="content" type="java.lang.String" update="false">
<column name="content" />
</property>
<property name="type" type="string" update="false">
<column name="type" />
</property>
<subclass name="com.beans.Status" discriminator-value="status">
<list name="children" inverse="false" table="POSTS" lazy="true">
<key column="pid" />
<index />
<one-to-many class="com.beans.Comment" />
</list>
</subclass>
<subclass name="com.beans.Comment" discriminator-value="comment"></subclass>
</class>
</hibernate-mapping>
我得到我需要的感覺在某處指定Status包含Comment的ArrayList的事實,但不是通過Post.hbm.xml中的「list」構造隱式完成的f ILE?
xml文件存在於我的類路徑(WEB-INF/classes)中,並且.java文件本身對應用程序也是可見的。洞察將不勝感激!
哇,非常感謝!很明顯,我仍然有很多東西需要了解這個框架,因爲在我遵循你的建議之後,我不得不依次處理至少一些新的異常,從而搞亂了我的Hibernate配置的其他方面。這次我的錯誤更直接,一切似乎都在正常工作:) 這是我第一次使用Hibernate驅動的應用程序,只需三天的學習就可以呼吸!非常感謝您的幫助! – Magsol 2009-10-14 16:10:31
歡迎您和Hibernate一起好運。起初有點困難,但在一段時間後成爲第二性質。而事實證明,只有3天才能成功運行,這表明你不會遇到太多問題:-) – ChssPly76 2009-10-14 16:37:14