मैं हाइबरनेट 4.2.1 और MySQL 5.5 का उपयोग कर रहा हूं।
हठ में। xml मेरे पास यह है:
<!-- ... -->
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLMyISAMDialect" />
</properties>
लेकिन जब मैं अपने डेटाबेस को चलाता हूं तो मेरा डेटाबेस किसी भी तालिका में नहीं होता है!
क्या किसी को कोई ख़याल है ?! धन्यवाद
उत्तर:
जवाब के लिए 0 № 1अपने कॉन्फ़िगर से बोली लाइन को पूरी तरह से हटा दें।
हाइबरनेट पता लगा सकता है कि किस बोली का उपयोग करना हैअंतर्निहित डेटाबेस मेटाडेटा पर यह मानते हुए कि आप इसे सही उपयोगकर्ता नाम / पासवर्ड देते हैं। मुझे अपने डेटाबेस संस्करण के लिए हाइबरनेट ऑटोडेटेक्टिंग के साथ कभी कोई समस्या नहीं थी। यह MySQL के साथ विशेष रूप से उपयोगी है, क्योंकि MySQL में बोलियों के विभिन्न संस्करण हैं जो इसका उपयोग कर सकते हैं।
यदि आप निम्न अपवाद देखते हैं
org.hibernate.HibernateException: Connection cannot be null when "hibernate.dialect" not set
इसका अर्थ है कि आपका उपयोगकर्ता नाम / पासवर्ड गलत है, और हाइबरनेट "डेटाबेस से कनेक्ट नहीं कर सकता है, वास्तव में मेटाडाटा को पढ़ने के लिए इसे स्वयं की बोली चुनने के लिए।
मैंने पाया है कि SQL स्क्रिप्ट का उपयोग करके डेटाबेस तालिकाओं को स्थापित करना आसान है, फिर हाइबरनेट को प्राप्त करें validate
आपका स्कीमा। किसी भी डेटाबेस संरचना को उत्पन्न करने के लिए हाइबरनेट प्राप्त करना (उपयोग करना) create-update
या केवल update
) एक उत्पादन वातावरण के लिए अनुशंसित नहीं है, क्योंकि आप डेटाबेस को स्थापित करने के तरीके पर नियंत्रण खो देते हैं।
टीएल; डीआर: हाइबरनेट को अपनी बोली चुनने दें। यह आपको घंटों उपद्रव से बचाएगा।