EntityManager नाम के लिए कोई दृढ़ता प्रदाता नहीं


148

मेरे पास निर्देशिका के तहत persistence.xmlएक ही नाम है । फिर, मेरे पास मेरा कोड है जिसे मैं इसके साथ बुला रहा हूं:TopLinkMETA-INF

EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb");

फिर भी, मुझे निम्नलिखित त्रुटि संदेश मिला:

2009-07-21 09: 22: 41,018 [मुख्य] ​​ERROR - एंटिसमैन मैनेजर के लिए कोई दृढ़ता प्रदाता
javax.persistence.PersistenceException: EntityManager के लिए कोई दृढ़ता प्रदाता नहीं है जिसे agisdb नाम दिया गया है
    javax.persistence.Persistence.createEntityManagerFactory (हठ.जैवी:)
    javax.persistence.Persistence.createEntityManagerFactory (सिद्धांतवादी .jv:18)

यहाँ है persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="agisdb">
        <class>com.agis.livedb.domain.AddressEntity</class>
        <class>com.agis.livedb.domain.TrafficCameraEntity</class>
        <class>com.agis.livedb.domain.TrafficPhotoEntity</class>
        <class>com.agis.livedb.domain.TrafficReportEntity</class>
        <properties>
            <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
            <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="toplink.jdbc.user" value="root"/>
            <property name="toplink.jdbc.password" value="password"/>
        </properties>
    </persistence-unit>
</persistence>

यह क्लासपाथ में होना चाहिए था। फिर भी, मुझे उपरोक्त त्रुटि मिली।

जवाबों:


85

के बाद <persistence-unit name="agisdb">, दृढ़ता प्रदाता नाम परिभाषित करें:

<provider>org.hibernate.ejb.HibernatePersistence</provider>

5
मैं डर्बी का उपयोग कर रहा हूं और इसे निर्दिष्ट करने के लिए आवश्यक नहीं था (मैंने किया था, लेकिन फिर मैंने समस्या हल करने के बाद इसे हटा दिया, बस सुनिश्चित करने के लिए)। मुझे अंत में त्रुटि मिल रही थी क्योंकि दृढ़ता s.xml src / META-INF फ़ोल्डर में नहीं थी, भले ही यह प्रोजेक्ट के लिए ग्रहण स्रोत पथ में एक फ़ोल्डर में रहा हो। मैं सोच रहा हूँ कि कहीं यह हार्ड-वायर्ड src / * पर तो नहीं है
फ्यूहरमैनेटर

6
यह मेरी मामले में आवश्यक नहीं था, लेकिन classpathing हाइबरनेट-entitymanager * .jar के रूप में कहा गया है Ualter जूनियर नीचे रों जवाब। मैं हाइबरनेट-कोर-4.3.7.jar , हाइबरनेट-एंटोमेनएजर-4.3.7.Final.jar और हाइबरनेट- जेपा -2.1-एपीआई-1.0.0.जर के साथ एक स्टैंडअलोन जीडब्ल्यूटी ऐप का उपयोग कर रहा हूं
एंड्रियास डिट्रिच

3
@AndreasDietrich के साथ, pom.xml में "हाइबरनेट-एंटरमैनमैन-4.3.10" के साथ "हाइबरनेट-कोर-4.3.10" विरूपण साक्ष्य को बदलने के बाद, यह त्रुटि हो गई है। दरअसल, hibernate.org/orm/downloads का कहना है कि आपको JPA के लिए "hibernate-unitmanager-4.3.10" का उपयोग करना चाहिए।
हांग

1
इसके अलावा, मुझे hibernate-entitymanager-3.4.0.GA से 3.6.10.Final भी जाना था । बस के मामले में आपके पास अभी भी हाइबरनेट 3 का उपयोग करके एक विरासत कोडबेस है
जावी वाज़केज़

5
मैं थोड़ा हैरान हूं कि आप अपने साथ एक समस्या में नहीं चलते हैं <provider/>, हाइबरनेट -4 का उपयोग करते समय आपको अपने प्रदाता को बदलना चाहिए <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>, देखें stackoverflow.com/questions/23041964/…
रोब

86

"hibernate-entitymanager.jar"आवेदन के classpath में रखो ।
नए संस्करणों के लिए, आपको "hibernate-core.jar"पदावनत के बजाय उपयोग करना चाहिएhibernate-entitymanager

यदि आप कुछ आईडीई के माध्यम से चल रहे हैं, जैसे कि ग्रहण :Project Properties -> Java Build Path -> Libraries.

अन्यथा इसे /libअपने आवेदन में रखें।


3
मुझे यह पता लगाने के लिए कुछ घंटे लगे। इस मामले में हाइबरनेट 4.1.3 के इस खूनी जार के लिए खोज अन्य लोगों के लिए, अपने में hibernate-release-4.1.3.Final \ lib \ जेपीए \ हाइबरनेट-entitymanager-4.1.3.Final.jar
Vedran

7
और कौन Maven का उपयोग कर रहे हम में से उन लोगों के लिए, कि ग्रुप होगा org.hibernateartifactidhibernate-entitymanager
साइमन Forsberg

2
यह मेरे लिए eclipselink.jar रहा है, जो रास्ते में गायब था। पथ में कोई हाइबरनेट * something.jar नहीं है।
उपयोगकर्ता अज्ञात

3
दृढ़ता की पुष्टि करते हुए बस कुछ ही घंटे बिताए गए थे। xml वर्ग पथ पर था, और इस परियोजना के लिए काम करने वाले एक प्रोजेक्ट के प्रत्येक पहलू की तुलना और इसके लिए काम नहीं किया। बहुत ही भ्रामक त्रुटि संदेश क्योंकि यह तब हो सकता है जब दृढ़ता। xml गायब है, अगर उस नाम के साथ पु गायब है, या जाहिरा तौर पर अगर एक हाइबरनेट जार गायब है!
डेविड मान

मेरे लिए यह org.eclipse.persistence.jpaस्कोप टेस्ट था।
मारेक

67

सुनिश्चित करें कि persistence.xmlफ़ाइल निर्देशिका में है:<webroot>/WEB-INF/classes/META-INF


8
यह मेरे लिए काम नहीं किया, दृढ़ता इकाई नहीं लाया: 'अशक्त' त्रुटि। इसे वापस चलकर /src/main/resources/META-INF/persistence.xml
tomsb

1
मुझे लगता है कि यह उन लोगों के लिए लागू होता है, जो टोलिंक (या अन्य वेब-संबंधित सामान) का उपयोग कर रहे हैं , अन्य सभी के लिए यहां अन्य उत्तर अधिक उपयुक्त हो सकते हैं।
साइमन फोर्सबर्ग

2
धन्यवाद, मेरे लिए पथ लक्ष्य / कक्षाएं / META-INF
Frizz1977

वही, किसी अजीब कारण के लिए इसे META-INF निर्देशिका में होना चाहिए, अन्यथा काम नहीं करेगा ...
थॉमस

17

मुझे अपनी pom.xml फ़ाइल में इसकी आवश्यकता थी:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>4.2.6.Final</version>
</dependency>

संस्करण 4.3.11 के लिए काम करता है।
अक्टूबर से

यह पदावनत है, ऊपर देखें। इसके बजाय हाइबरनेट-कोर का उपयोग करें।
foo

16

एक ही समस्या का सामना किया और काफी लंबे समय के लिए समाधान नहीं मिल सका। मेरे मामले में इसे बदलने में मदद मिली

<provider>org.hibernate.ejb.HibernatePersistence</provider>

साथ में

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>

यहां से समाधान निकाला


2
हाइबरनेट 4.3.5 से 5.2.12 तक अपग्रेड हो रहा था और इस प्रदाता नाम परिवर्तन ने मेरे लिए समस्या तय कर दी। यह सेटिंग JPA को मेज़र केंद्रीय रिपॉजिटरी में दर्शाए गए अनुसार। Manger .jar के बजाय कोर .jar फ़ाइल का उपयोग करने की अनुमति देती प्रतीत होती है। शेयर करने के लिए बहुत बहुत शुक्रिया।

10

एक अन्य बिंदु है: यदि आप एक ग्रहण आरसीपी वातावरण के भीतर इस समस्या का सामना करना पड़ता है, तो आप से फैक्टरी पीढ़ी को बदलने के लिए हो सकता है Persistence.createEntityManagerFactoryके लिएnew PersistenceProvider().createEntityManagerFactory

इस पर विस्तृत चर्चा के लिए ईसीएफ देखें ।


यह वही समस्या थी जो मुझे org.eclipse.persistence.jpa 2.4.0 के साथ हो रही थी। मैंने सचमुच अपने बालों को खींचते हुए 2 घंटे बिताए और सोचा कि यह मेरी दृढ़ता क्यों नहीं पा रहा है। सभी उदाहरणों में इसे शामिल नहीं किया गया है। ओह ठीक है ... बहुत बहुत धन्यवाद!
मार्क मिलर

9

हो सकता है कि आपने एक प्रदाता को परिभाषित किया हो, <provider>org.hibernate.ejb.HibernatePersistence</provider>लेकिन जार में दूसरे को संदर्भित किया हो। मेरे साथ यही हुआ: मेरी दृढ़ता। xml प्रदाता Openjpa थी, लेकिन मैं अपने वर्गपथ में eclipselink का उपयोग कर रहा था। उममीद है कि इससे मदद मिलेगी!


7

त्वरित सलाह:

  • अगर आपकी क्लासपाथ में दृढ़ता है तो जाँच करें
  • जांच लें कि हाइबरनेट प्रदाता आपके वर्गपथ में है या नहीं

स्टैंडअलोन एप्लिकेशन (जावा के बाहर) में जेपीए का उपयोग करने के साथ, एक दृढ़ता प्रदाता को कहीं निर्दिष्ट करने की आवश्यकता है। यह दो तरीकों से किया जा सकता है जो मुझे पता है:

  • या तो प्रदाता तत्व को दृढ़ता इकाई में जोड़ें: <provider>org.hibernate.ejb.HibernatePersistence</provider>(क्रिस द्वारा सही उत्तर में वर्णित: https://stackoverflow.com/a/1285436/784594 )
  • या इंटरफ़ेस javax.persistence.spi.PersistenceProvider के लिए एक सेवा के रूप में निर्दिष्ट किया जाना चाहिए, यहाँ देखें: http://docs.oracle.com/javase/6/docs/api/java/util-ServiceLoader.html (यह आमतौर पर है) जब आप हाइबरनेट, या किसी अन्य जेपीए कार्यान्वयन को अपने वर्गपथ में शामिल करते हैं

मेरे मामले में, मुझे पता चला कि मावेन मिसकॉन्फ़िगरेशन के कारण, हाइबरनेट-एन्ट्रोमैनेजर जार को एक निर्भरता के रूप में शामिल नहीं किया गया था, भले ही यह अन्य मॉड्यूल की एक क्षणिक निर्भरता थी।


/ फेसपालम - मैं हाइबरनेट प्रदाता के लिए मावेन निर्भरता जोड़ना भूल गया। धन्यवाद!
१२:१४ बजे

5

यदि आप ग्रहण का उपयोग कर रहे हैं, तो सुनिश्चित करें कि बहिष्करण पैटर्न persistence.xmlबिल्ड पथ पर आपके स्रोत फ़ोल्डर से नहीं निकालता है।

  1. पर जाएं गुण -> जावा बिल्ड पथ -> स्रोत टैब
  2. अपने बहिष्करण पैटर्न की जाँच करें जो
    MyProject/src/main/java -> Excluded: <your_pattern>
    ट्री नोड पर स्थित है
  3. वैकल्पिक रूप से, इसे Excluded: (None)नोड का चयन करके और बाईं ओर Edit ... बटन पर क्लिक करके सेट करें

मेरी समस्या का समाधान किया। बाहर निकाले गए पैटर्न को एक भ्रूण / खींचने के बाद "**" पर सेट किया गया था। मुझे नहीं पता कि क्यों ...
जॉचली

5

मुझे यहां पार्टी में कुछ साल देर हो गई है, लेकिन मैंने एचएसक्यूएलडीबी और एक डेस्कटॉप जावाएफएक्स प्रोग्राम के साथ काम करते हुए हाइबरनेट 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>

मैंने संभवतः इस मणि पर लगभग आधा दिन बर्बाद किया। मेरी सलाह बहुत सरल है - एक या दो क्षेत्रों के साथ एक एकल परीक्षण इकाई शुरू करना, क्योंकि ऐसा लगता है कि इस अपवाद के कई कारण हो सकते हैं।


विन्यास विवरण के लिए एक टन धन्यवाद वास्तव में इसे हल करने में मदद की।
Doogle

4

कॉर्नर केस: यदि आप m2Eclipse का उपयोग कर रहे हैं, तो यह स्वचालित रूप से आपके संसाधन फ़ोल्डरों को बाहर कर देता है। फिर जब आप ग्रहण के अंदर परीक्षण चलाने का प्रयास करते हैं, तो बाद की दृढ़ता का अभाव। xml इस त्रुटि का उत्पादन करेगा।


3

सुनिश्चित करें कि आपने 'src' फोल्डर के नीचे persistence.xml फ़ाइल बनाई है। मैंने प्रोजेक्ट फ़ोल्डर के तहत बनाया और वह मेरी समस्या थी।


4.4.0 एसआरसी फ़ोल्डर्स को ग्रहण नहीं करना चाहता है, इसलिए मैं शीर्ष स्तर पर मेटा-इन डाल रहा था, सोच रहा था कि निरंतरता। xml क्लासपथ पर होना पर्याप्त होगा। नहीं! मुझे मैन्युअल रूप से एक src / META-INF (ऑपरेटिंग सिस्टम में) बनाना था और हाथ से हठ.xml फ़ाइल को स्थानांतरित करना था। शायद ग्रहण में ऐसा करना संभव है, लेकिन मैं इसका पता नहीं लगा सका।
फ्यूहरमैनेटर

3

यदि आप मावेन का उपयोग कर रहे हैं, तो यह हो सकता है कि यह मेटा-इन फ़ोल्डर के लिए सही जगह नहीं देख रहा है। अन्य लोगों ने फ़ोल्डर की प्रतिलिपि बनाने का उल्लेख किया है, लेकिन मेरे लिए काम करने का एक और तरीका मावेन को यह बताना था कि <resources>टैग का उपयोग करके इसे कहां देखना है । देखें: http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html


2

यह तब होता है जब इकाई प्रबंधक कई दृढ़ता इकाइयों को इंगित करने का प्रयास कर रहा होता है। निम्न चरण करें:

  1. अपने संपादक में संबंधित फ़ाइल खोलें (बशर्ते आपका प्रोजेक्ट आपके आईडीई में बंद हो गया हो)
  2. सभी दृढ़ता और इकाई प्रबंधक संबंधित कोड को हटा दें
  3. फ़ाइल सहेजें
  4. अपने IDE में प्रोजेक्ट खोलें
  5. अब अपनी पसंद के db या टेबल को बांधें

2

मैं एक ही समस्या का सामना करना पड़ा, लेकिन EclipseLink संस्करण 2.5.0 पर

मैंने अभी तक एक और जार फ़ाइल जोड़कर अपनी समस्या को हल किया जो जरूरी थी ( javax.persistence_2.1.0.v201304241213.jar.jar );

जार की आवश्यकता:
- javax.persistence_2.1.0.v201304241213.jar
- eclipselink.jar
- jdbc.jar (उपयोग किए गए डेटाबेस के आधार पर)।

आशा है कि ये आपकी मदद करेगा।


2

मेरे पास भी यह त्रुटि थी लेकिन मुद्दा नाम स्थान का था persistence.xml

मैंने 2.1 और 2.0 के संस्करण http://xmlns.jcp.org/xml/ns/persistenceको प्रतिस्थापित किया http://java.sun.com/xml/ns/persistence

यह अब काम कर रहा है।


ठीक यही मेरे लिए
टॉमकैट

2

आपको क्लासपैथ में हाइबरनेट-एंटोमेनैजर-x.jar जोड़ना होगा।

Hibernate 4.x में, यदि जार मौजूद है, तो pers.ence.xml फ़ाइल में org.hibernate.ejb.HibernatePersistence जोड़ने की आवश्यकता नहीं है।


1

इस सवाल का जवाब पहले ही दिया जा चुका है, लेकिन मैं एक टिप पोस्ट करना चाहता था जो मुझे पकड़ रही थी। पिछली त्रुटियों के बाद यह अपवाद फेंका जा रहा था। मुझे यह मिल रहा था:

property toplink.platform.class.name is deprecated, property toplink.target-database should be used instead.

हालांकि मैंने नई संपत्ति के नाम को शामिल करने के लिए दृढ़ता बदल दी थी।

<property name="toplink.target-database" value="oracle.toplink.platform.database.oracle.Oracle10Platform"/>

पदावनत संपत्ति नाम के बारे में संदेश के बाद मुझे ऊपर की तरह एक ही PersistenceException मिल रही थी और अपवादों की एक पूरी स्ट्रिंग। मेरी टिप: अपवाद सॉसेज की शुरुआत की जांच करना सुनिश्चित करें।

ग्लासफिश v2.1.1 में एक बग प्रतीत होता है, जहां redeploys या undeploys और deploys दृढ़ता को अद्यतन नहीं कर रहे हैं। xml, जो कहीं कैश किया जा रहा है। मुझे सर्वर को पुनरारंभ करना पड़ा और फिर यह काम किया।


1

ओएसजीआई-संदर्भ में, बंडल की MANIFEST.MF में अपनी दृढ़ता इकाइयों को सूचीबद्ध करना आवश्यक है, उदाहरण के लिए

JPA-PersistenceUnits: my-persistence-unit

अन्यथा, JPA- बंडल को नहीं पता होगा कि आपके बंडल में दृढ़ता इकाइयां हैं।

Http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Developing_with_EclipseLink_OSGi_in_PDE देखें ।


1

आपको क्लासपैथ में निम्न जार फ़ाइलों की आवश्यकता है:

  1. antlr-2.7.6.jar
  2. कॉमन्स-संग्रह-3.1.jar
  3. dom4j-1.6.1.jar
  4. हाइबरनेट-कॉमन्स-एनोटेशन-4.0.1.Final.jar
  5. हाइबरनेट कोर-4.0.1.Final.jar
  6. हाइबरनेट-entitymanager.jar
  7. हाइबरनेट-जेपीए-2.0-api-1.0.0.Final.jar
  8. javassist-3.9.0.jar
  9. jboss-प्रवेश-3.1.1.GA.jar
  10. JTA-1.1.jar
  11. slf4j-api-1.5.8.jar
  12. xxx-JDBC-driver.jar


1


वर्ग पथ में आवश्यक हाइबरनेट 5.2.5 जार फाइलें। यह हाइबरनेट 5.2.5 अंतिम रिलीज के एक आवश्यक फ़ोल्डर के भीतर है। इसे http://hibernate.org/orm/downloads/ से डाउनलोड किया जा सकता है

  1. antlr-2.7.7
  2. CDI-api-1.1
  3. सहपाठी-1.3.0
  4. dom4j-1.6.1
  5. अल-api-2.2
  6. Geronimo-jta_1.1_spec-1.1.1
  7. hibernate-commons-annotation-5.0.1.Final
  8. hibernate-core-5.2.5.Final
  9. hibernate-jpa-2.1-api-1.0.0.Final
  10. jandex-2.0.3.Final
  11. javassist-3.20.0-जीए
  12. javax.inject -1
  13. jboss-इंटरसेप्टर-api_1.1_spec-1.0.0.Beta1
  14. jboss-logging-3.3.0.Final
  15. jsr250-api-1.0

एक xml फ़ाइल बनाएँ "persistence.xml" में

YourProject / src / META-INF / persistence.xml

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>

<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="sample">

    <class>org.pramod.data.object.UserDetail</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/hibernate_project"/>
        <property name="hibernate.connection.username" value="root"/>
        <property name="hibernate.connection.password" value="root"/>
        <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.format_sql" value="false"/>

        <property name="hibernate.cache.use_second_level_cache" value="false"/>

        <property name="hibernate.archive.autodetection" value="true"/>
    </properties>
</persistence-unit>

  1. कृपया ध्यान दें कि <दृढ़ता> टैग और संस्करण में उल्लिखित जानकारी 2.1 होनी चाहिए।
  2. कृपया ध्यान दें नाम <दृढ़ता-इकाई> टैग, नाम "नमूना" के रूप में उल्लेख किया गया है । आपके लोड करते समय इस नाम का बिल्कुल उपयोग करने की आवश्यकता है

EntityManagerFactor = Persistance.createEntityManagerFactory ("नमूना"); । "नमूना" आपके नामकरण सम्मेलन के अनुसार बदला जा सकता है।

अब एक इकाई वर्ग बनाएँ। पैकेज में मेरे उदाहरण UserDetail के अनुसार नाम के साथ, org.pramod.data.object

UserDetail.java

package org.pramod.data.object;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "user_detail")
public class UserDetail {
    @Id
    @Column(name="user_id")
    private int id;
    @Column(name="user_name")
    private String userName;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }   
    @Override
    public String toString() {
       return "UserDetail [id=" + id + ", userName=" + userName + "]";
    }
}

अब मुख्य विधि के साथ एक वर्ग बनाएं।

HibernateTest.java

package org.pramod.hibernate;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import org.pramod.data.object.UserDetail;

public class HibernateTest {
    private static EntityManagerFactory entityManagerFactory;

    public static void main(String[] args)  {
        UserDetail user = new UserDetail();
        user.setId(1);
        user.setUserName("Pramod Sharma");

        try {
            entityManagerFactory = Persistence.createEntityManagerFactory("sample");
            EntityManager entityManager = entityManagerFactory.createEntityManager();
            entityManager.getTransaction().begin();
            entityManager.persist( user );
            entityManager.getTransaction().commit();
            System.out.println("successfull");
            entityManager.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

आउटपुट होगा

UserDetail [id=1, userName=Pramod Sharma]
Hibernate: drop table if exists user_details
Hibernate: create table user_details (user_id integer not null, user_name varchar(255), primary key (user_id))
Hibernate: insert into user_details (user_name, user_id) values (?, ?)
successfull

1

मेरे मामले में, पहले मैं डेटाबेस स्कीमा द्वारा इकाई उत्पन्न करने के लिए विचार का उपयोग करता हूं, और persistence.xmlस्वचालित रूप से उत्पन्न होता है src/main/java/META-INFऔर https://stackoverflow.com/a/23890419/10701129 के अनुसार , मैं इसे स्थानांतरित करता हूं src/main/resources/META-INF, साथ ही मेटा-इन के रूप में चिह्नित किया गया है। स्रोत जड़ इससे मेरा काम बनता है।

लेकिन बस मूल मेटा-इन (यानी, src / main / java / META-INF) को स्रोत रूट के रूप में चिह्नित करना, काम नहीं करता है, जो मुझे भ्रमित करता है।

और यह संरचना है: यहाँ छवि विवरण दर्ज करें


0

यदि अलग- Persistence.createEntityManagerFactory("JPAService")अलग वर्गों में अलग- अलग नाम हैं तो आपको त्रुटि मिलती है। रिफ्लेक्ट करने से अलग-अलग नाम मिलना संभव है जो मेरे मामले में था। एक वर्ग में ऑटो-जेनरेट किया Persistence.createEntityManagerFactory("JPAService")गया private void initComponents(), Persistence.createEntityManagerFactory("JPAServiceExtended")कॉन्टेक्टटेबल क्लास डीबीएमएग्नर क्लास से अलग था ।


0

मेरा अस्तित्व दृढ़ता में जानकारी जोड़कर हल हो गया। उदाहरण के लिए <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>और फिर सुनिश्चित करें कि आपके पास लाइब्रेरी है

<dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>eclipselink</artifactId>
  <version>2.5.0</version>
</dependency>

0

प्रति इकाई नाम सत्यापित करें

<persistence-unit name="com.myapp.model.jpa"
    transaction-type="RESOURCE_LOCAL">    
public static final String PERSISTENCE_UNIT_NAME = "com.myapp.model.jpa";
Persistence.createEntityManagerFactory(**PERSISTENCE_UNIT_NAME**);

0

मेरे मामले में यह नीचे के रूप में दो गुणों में गलती के बारे में था। जब मैंने उन्हें 'नो पर्सिस्टेंस प्रोवाइडर फॉर एंटिटी मैनजर' नाम दिया तो वे गायब हो गए।

तो आप सब कुछ सही है या नहीं यह जांचने के लिए अपने गुणों के साथ परीक्षण कनेक्शन की कोशिश कर सकते हैं।

<property name="javax.persistence.jdbc.url" value="...”/>
<property name="javax.persistence.jdbc.password" value="...”/>

अजीब त्रुटि, मैं इसके कारण पूरी तरह से भ्रमित था।


0

फ़ोल्डर में मैन्युअल रूप से दृढ़ता की प्रतिलिपि बनाने का प्रयास करें <project root>\bin\META-INF। यह EclipseLink 2.5.2एक सरल प्लग-इन प्रोजेक्ट का उपयोग करने के साथ एक्लिप्स नियॉन में समस्या को ठीक करता है ।


0

एक ही मुद्दा था, लेकिन यह वास्तव में मेरे लिए काम किया:

mvn install -e  -Dmaven.repo.local=$WORKSPACE/.repository.

एनबी: ऊपर मावेन कमांड आपके सभी प्रोजेक्ट निर्भरता को खरोंच से पुनर्स्थापित करेगा। नेटवर्क अनुरोध मावेन बनाने के कारण आपका कंसोल वर्बोज़ लॉग के साथ लोड किया जाएगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.