Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

हाइबरनेट 5 :- org.hibernate.MappingException:अज्ञात निकाय

मैंने हाइबरनेट 5 के साथ भी यही समस्या ठीक की है। इस कोड में एक समस्या है

Configuration configuration = new Configuration();
configuration.configure();

ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(
    configuration.getProperties()).build();

SessionFactory sf = configuration.buildSessionFactory(sr);

यह कोड हाइबरनेट 4.3.5 के लिए ठीक काम करता है, लेकिन उसी कोड में हाइबरनेट 5 के लिए एक ही समस्या है।

जब आप configuration.buildSessionFactory(sr) करते हैं , हाइबरनेट 5 का उपयोग करते हुए, Configuration configuration.configure() . कॉल करके मिलने वाली मैपिंग के बारे में सारी जानकारी खो देता है ।

समाधान

समस्या को ठीक करने के लिए, यदि आप मानक कॉन्फ़िगरेशन फ़ाइलों का उपयोग करते हैं hibernate.cfg.xml और hibernate.properties , आप इस तरह से सत्र फ़ैक्टरी बना सकते हैं (बिना ServiceRegistry . के) )

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

गुण लोड हो रहे हैं

यदि आपके पास किसी अन्य फ़ाइल में गुण हैं तो hibernate.properties , आप StandardServiceRegistryBuilder . का उपयोग करके सत्र फ़ैक्टरी बना सकते हैं (वैसे भी, यदि आपके पास hibernate.properties . है और अन्य फ़ाइल, इसे दोनों लोड किया जाएगा)

गुण को संसाधन के रूप में लोड करने के लिए

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);  

आपके पास hibernate-h2.properties होना चाहिए कक्षा पथ में (स्रोत फ़ोल्डर की जड़, संसाधन फ़ोल्डर)। आप रूट स्रोत फ़ोल्डर से भी पथ निर्दिष्ट कर सकते हैं/com/github/xxx/model/hibernate-h2.properties

फ़ाइल सिस्टम में पथ से गुण लोड करने के लिए

File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);

आप यहां इस दृष्टिकोण का उपयोग करके एक उदाहरण कंसोल एप्लिकेशन पा सकते हैं fluent-hibernate-mysql . यह fluent-hibernate लाइब्रेरी से सत्र फ़ैक्टरी बनाने के लिए उपयोगिता वर्ग का उपयोग करता है .

गलत हाइबरनेट 5 ट्यूटोरियल

हाइबरनेट 5 ट्यूटोरियल में एक गलत उदाहरण है 1.1.6। स्टार्टअप और सहायक . यह इस कोड का उपयोग करता है

 return new Configuration().configure().buildSessionFactory(
                new StandardServiceRegistryBuilder().build() );

यह उचित कॉन्फ़िगरेशन नहीं करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle विषम सेवाओं के साथ MySQL का उपयोग करना

  2. MySQL तालिका को दो स्तंभों द्वारा क्रमित करें

  3. JDBC MySql कनेक्शन पूलिंग अभ्यास समाप्त कनेक्शन पूल से बचने के लिए

  4. मैं किसी विशिष्ट तालिका के लिए MySQL इंजन प्रकार की जांच कैसे कर सकता हूं?

  5. त्रुटि कोड:1406। कॉलम के लिए डेटा बहुत लंबा है - MySQL