मुझे पता है कि यह ठीक करने के लिए एक बहुत ही प्राथमिक मुद्दा होना चाहिए, लेकिन 1) मैं हाइबरनेट के लिए अपेक्षाकृत नया हूं, और 2) जो फिक्सेस मैंने पाया है (ऐसा प्रतीत होता है) यहां लागू नहीं होता है ।हाइबरनेट: अनमैड क्लास एसोसिएशन अपवाद
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)
यह तब होता है जब हाइबरनेट ही कॉन्फ़िगर करने के लिए प्रयास करता है:
यहाँ अपवाद मैं हो रही है।
जिन वस्तुओं के साथ मैं काम कर रहा हूं वे उपयोगकर्ता हैं, पोस्ट (सार सुपरक्लास), स्थिति और टिप्पणियां (पोस्ट के ठोस उप-वर्ग)। प्रत्येक दो टेबलों में से एक से बीन है: USERS और POSTS। उपयोगकर्ता ऑब्जेक्ट्स सुंदर वेनिला हैं: उपयोगकर्ता का वर्णन करने वाले बहुत सारे ब्लेंड फ़ील्ड। समान उबाऊ क्षेत्रों के अलावा, एक स्थिति और एक टिप्पणी दोनों मालिक हैं (उपयोगकर्ता इसे पोस्ट किया गया है)। किसी टिप्पणी से स्थिति में क्या अंतर होता है यह है कि स्थिति में उससे जुड़ी टिप्पणियों की एक सूची हो सकती है लेकिन कोई अभिभावक नहीं है, जबकि किसी टिप्पणी में कोई बच्चा पोस्ट नहीं होता है, लेकिन माता-पिता (हाँ, यह मूल रूप से फेसबुक है)।
जो मैंने पढ़ा है, उससे समस्या कई से एक मैपिंग में प्रतीत होती है, लेकिन मुझे कुछ भी गलत नहीं लगता है। यहां तीन विन्यास फाइलें हैं जिनका मैं उपयोग कर रहा हूं।
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>
मैं महसूस कर रही मैं करने की जरूरत है पाने के कहीं भी इस तथ्य को निर्दिष्ट करें कि किसी स्थिति में टिप्पणी का ऐरेलिस्ट होता है, लेकिन यह पोस्ट.hbm.xml f में "सूची" निर्माण के माध्यम से पूर्ण रूप से नहीं किया जाता है इले?
एक्सएमएल फाइलें मेरे क्लासपाथ (वेब-आईएनएफ/कक्षाओं) में मौजूद हैं, और .java फाइलें भी एप्लिकेशन के लिए दृश्यमान हैं। अंतर्दृष्टि की सराहना की जाएगी!
वाह, बहुत बहुत धन्यवाद! यह स्पष्ट है कि मेरे पास अभी भी आपके ढांचे के बारे में जानने के लिए काफी कुछ है, क्योंकि मैंने आपके सुझावों का पालन करने के बाद, मुझे अपने हाइबरनेट कॉन्फ़िगरेशन के अन्य पहलुओं को गड़बड़ाने से कम से कम एक दर्जन नए अपवादों को अनुक्रमित करना पड़ा। इस बार मेरी गलतियों को और अधिक सरल था, और सबकुछ काम कर रहा है :) यह मेरा पहला कभी-कभी हाइबरनेट संचालित एप्लिकेशन है, और सीखने के केवल तीन दिनों के बाद यह सांस ले रहा है! मदद के लिए आपका बहुत बहुत धन्यवाद! – Magsol
आपका स्वागत है और हाइबरनेट के साथ शुभकामनाएँ। यह पहली बार थोड़ा मुश्किल आता है लेकिन थोड़ी देर बाद दूसरी प्रकृति बन जाता है। और वह तथ्य यह है कि आप इसे केवल 3 दिनों के बाद काम करने में कामयाब रहे हैं, सुझाव देते हैं कि आपको आगे बढ़ने में बहुत सारी समस्याएं नहीं होंगी :-) – ChssPly76