मुझे यहां पार्टी में कुछ साल देर हो गई है, लेकिन मैंने एचएसक्यूएलडीबी और एक डेस्कटॉप जावाएफएक्स प्रोग्राम के साथ काम करते हुए हाइबरनेट 3.5.1 प्राप्त करने की कोशिश करते हुए एक ही अपवाद मारा। मुझे इस थ्रेड और बहुत सारे परीक्षण और त्रुटि की मदद से काम करने के लिए मिला। ऐसा लगता है कि आपको यह त्रुटि विभिन्न प्रकार की समस्याओं के लिए मिली है:
No Persistence provider for EntityManager named mick
मैंने हाइबरनेट ट्यूटोरियल उदाहरणों के निर्माण की कोशिश की, लेकिन क्योंकि मैं जावा 10 का उपयोग कर रहा था, मैं उन्हें आसानी से बनाने और चलाने में सक्षम नहीं था। मैंने उस पर ध्यान दिया, वास्तव में अपनी समस्याओं को ठीक करने के लिए समय बर्बाद नहीं करना चाहता था। एक मॉड्यूल-info.java फ़ाइल (आरा) की स्थापना एक और हेयरबॉल है जिसे कई लोगों ने अभी तक नहीं खोजा है।
कुछ भ्रमित करने वाली बात यह है कि ये (नीचे) केवल दो फाइलें थीं जिनकी मुझे अपनी बिल्ड.ग्रेडल फ़ाइल में आवश्यकता थी। हाइबरनेट प्रलेखन बिल्कुल स्पष्ट नहीं है कि आपको किस जार को शामिल करने की आवश्यकता है। इकाई-प्रबंधक भ्रम पैदा कर रहा था और अब नवीनतम हाइबरनेट संस्करण में इसकी आवश्यकता नहीं है, और न ही javax.persistence-api है। ध्यान दें, मैं यहाँ जावा 10 का उपयोग कर रहा हूँ, इसलिए मुझे jaxb-api को शामिल करना था, कुछ xml-bind त्रुटियों को प्राप्त करने के लिए, साथ ही साथ मेरे मॉड्यूल-info.java फ़ाइल में जावा दृढ़ता मॉड्यूल के लिए एक प्रविष्टि जोड़ें।
Build.gradle
// https://mvnrepository.com/artifact/org.hibernate/hibernate-core
compile('org.hibernate:hibernate-core:5.3.1.Final')
// https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api
compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'
Module-info.java
// Used for HsqlDB - add the hibernate-core jar to build.gradle too
requires java.persistence;
हाइबरनेट 5.3.1 के साथ, आपको अपनी दृढ़ता, xml फ़ाइल में, नीचे, प्रदाता को निर्दिष्ट करने की आवश्यकता नहीं है। यदि किसी को प्रदान नहीं किया जाता है तो हाइबरनेट प्रदाता डिफ़ॉल्ट रूप से चुना जाता है।
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
दृढ़ता। Xml फ़ाइल को सही निर्देशिका में स्थित होना चाहिए ताकि:
src/main/resources/META-INF/persistence.xml
Intellij डीबगर में हाइबरनेट स्रोत कोड के माध्यम से कदम, जहां यह एक बोली के लिए जाँच करता है, यह भी सटीक एक ही अपवाद फेंक दिया, क्योंकि persistence.xml फ़ाइल में एक गुम बोली संपत्ति है। मैंने इसे जोड़ा (अपने DB प्रकार के लिए सही जोड़ें):
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
मुझे इसके बाद भी वही अपवाद मिला, इसलिए इन्टेलिज में फिर से डिबगर के माध्यम से कदम रखने से पता चलता है कि मैं जिस टेस्ट यूनिट को जारी रखने की कोशिश कर रहा था (सरल माता-पिता-बच्चे का उदाहरण) के पास वनटोमनी, कईटूटो रिश्तों के लिए लापता एनोटेशन थे। मैंने इसे ठीक किया और अपवाद चला गया और मेरी इकाइयां ठीक बनी रहीं।
यहाँ मेरी पूरी अंतिम दृढ़ता है। xml:
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="mick" transaction-type="RESOURCE_LOCAL">
<description>
Persistence unit for the JPA tutorial of the Hibernate Getting Started Guide
</description>
<!-- Provided in latest release of hibernate
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
-->
<class>com.micks.scenebuilderdemo.database.Parent</class>
<class>com.micks.scenebuilderdemo.database.Child</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbc.JDBCDriver"/>
<property name="javax.persistence.jdbc.url"
value="jdbc:hsqldb:file:./database/database;DB_CLOSE_DELAY=-1;MVCC=TRUE"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
</properties>
</persistence-unit>
</persistence>
मैंने संभवतः इस मणि पर लगभग आधा दिन बर्बाद किया। मेरी सलाह बहुत सरल है - एक या दो क्षेत्रों के साथ एक एकल परीक्षण इकाई शुरू करना, क्योंकि ऐसा लगता है कि इस अपवाद के कई कारण हो सकते हैं।