সত্ত্বা ম্যানেজারের জন্য কোনও জেদী প্রস্তাব প্রদানকারী নেই


148

আমি আমার আছে persistence.xmlএকই নামের ব্যবহার করে TopLinkঅধীনে META-INFডিরেক্টরি। তারপরে, আমার কোডটি এটি দিয়ে কল করছে:

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

তবুও, আমি নিম্নলিখিত ত্রুটি বার্তা পেয়েছি:

2009-07-21 09: 22: 41,018 [মূল] ERROR - অ্যাসিএসডিবি নামের সত্তা ম্যানেজারের জন্য কোন অধ্যবসায় সরবরাহকারী নেই
javax.persistance.PersistanceException: Agitydb নামে সত্ত্বা ম্যানেজারের জন্য কোন জোর সরবরাহকারী নেই
    জাভ্যাক্স.পার্সিস্টিটি. পার্সারসিটি.ক্রিটএটিটি ম্যানেজার ফ্যাক্টরি (দৃistence়তা.জভা: ৯৮)
    জাভ্যাক্স.পার্সিস্টিটি. পার্সারিস্টি.ক্রেটএন্টিটি ম্যানেজার ফ্যাক্টরি (দৃistence়তা.জভা.60০)

এখানে 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
আমি ডার্বি ব্যবহার করছি এবং এটি নির্দিষ্ট করার প্রয়োজন ছিল না (সমস্যাটি সমাধান করার পরে আমি এটি করেছি, তবে এটি সরিয়ে ফেললাম, কেবলমাত্র নিশ্চিত করার জন্য)। আমি শেষ পর্যন্ত ত্রুটিটি পেয়েছিলাম কারণ দৃ pers়তা। XML প্রকল্পের জন্য গ্রহগ্রন্থ উত্স পথে কোনও ফোল্ডারে থাকা সত্ত্বেও, src / META-INF ফোল্ডারে ছিল না। আমি কোথাও ভাবছি যে এসআরসি / * এ থাকা শক্ত-তারযুক্ত
ফুহরম্যানেটর

6
এই আমার ক্ষেত্রে প্রয়োজনীয় ছিলেন না কিন্তু classpathing হাইবারনেট-entitymanager * জার হিসেবে বিবৃত Ualter জুনিয়র নিচে গুলি উত্তর। আমি হাইবারনেট-কোর-৪.৩..7.জার , হাইবারনেট-সত্তা-পরিচালক -৩.৩...ফাইনাল.জার এবং হাইবারনেট- জেপিএ -২.১-এপিআই -১.০.০.জার সহ একটি স্ট্যান্ডেলোন জিডাব্লুটি অ্যাপ্লিকেশন ব্যবহার করছি ।
আন্দ্রেয়াস ডায়েটারিচ

3
@ অ্যান্ড্রেসডিয়েটরিচের সাথে একইভাবে, "হাইবারনেট-কোর-৪.৩.১০" আর্টিক্টকে পম.এক্সএমএল-এ "হাইবারনেট-অ্যান্টিমেঞ্জার -২.৩.১০" প্রতিস্থাপন করার পরে, আমি এই ত্রুটিটি পেয়ে গেছি। প্রকৃতপক্ষে, হাইবারনেট.অর্গ / হরম / ডাউনলোডগুলি বলছে যে আপনাকে জেপিএর জন্য "হাইবারনেট-সত্তা-পরিচালক entity.৩.১০" ব্যবহার করা উচিত।
হংকং

1
এগুলি ছাড়াও আমাকে হাইবারনেট-সেন্টিমিটি ম্যানেজার ৩.৪.০.০.জিএ থেকে ৩.6.১০ . ফাইনাল পর্যন্ত যেতে হয়েছিল । ঠিক আপনার ক্ষেত্রে এখনও হাইবারনেট ৩ ব্যবহার করে কোনও উত্তরাধিকার কোডবেস রয়েছে
জাভি ওয়াজকেজ

5
আমি কিছুটা অবাক হয়েছি যে আপনি আপনার কোনও সমস্যায় পড়েন না <provider/>, হাইবারনেট -4 ব্যবহার করার সময় আপনার সরবরাহকারীকে পরিবর্তন করা উচিত <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>, স্ট্যাকওভারফ্লো / প্রশ্নগুলি / ২৩৩০১৯6464/২ দেখুন
রব

86

"hibernate-entitymanager.jar"প্রয়োগের ক্লাসপথে রাখুন ।
নতুন সংস্করণগুলির জন্য, আপনার "hibernate-core.jar"হ্রাসের পরিবর্তে ব্যবহার করা উচিতhibernate-entitymanager

আপনি যদি কিছু আইডিই দিয়ে চলেছেন, যেমন অ্যাকলিপস :Project Properties -> Java Build Path -> Libraries.

অন্যথায় এটি /libআপনার অ্যাপ্লিকেশনটির মধ্যে রাখুন।


3
এই কারণটি বোঝার জন্য আমাকে কয়েক ঘন্টা সময় নিয়েছে। , ক্ষেত্রে হাইবারনেট 4.1.3 এই রক্তাক্ত বয়াম অনুসন্ধানের জন্য অন্যান্য মানুষের জন্য, তার মধ্যে hibernate-release-4.1.3.Final \ liberal এর সংক্ষিপ্ত রূপ \ jpa \ হাইবারনেট-entitymanager-4.1.3.Final.jar
Vedran

7
এবং আমরা যারা মাভেন ব্যবহার করছি তাদের পক্ষে এটি গ্রুপিফিক org.hibernateআর্টিফ্যাটিড হবেhibernate-entitymanager
সাইমন ফোর্সবার্গ

2
এটি আমার জন্য গ্রহপরিচয় ছিল jarজর, যা পথে অনুপস্থিত। কোনও হাইবারনেট নেই * কোনও কিছুর.পথটিতে মোটেই নেই।
ব্যবহারকারী অজানা

3
অধ্যবসায় নিশ্চিত করতে কয়েক ঘন্টা ব্যয় করেছেন। এক্সএমএল শ্রেণির পথে ছিল এবং যে প্রকল্পের জন্য এটি কাজ করেছিল এবং প্রতিটি প্রকল্পের জন্য এটি কাজ করে নি তার তুলনা করে। অত্যন্ত বিভ্রান্তিকর ত্রুটি বার্তা যেহেতু এটি ঘটতে পারে যদি অধ্যবসায়। XML অনুপস্থিত থাকে, যদি সেই নামের পিইউ অনুপস্থিত থাকে বা দৃশ্যত যদি হাইবারনেট জারটি অনুপস্থিত থাকে!
ডেভিড মান

আমার জন্য এটি org.eclipse.persistence.jpaস্কোপ টেস্ট ছিল।
মারেক

67

persistence.xmlফাইলটি ডিরেক্টরিতে রয়েছে তা নিশ্চিত করুন :<webroot>/WEB-INF/classes/META-INF


8
এটি আমার পক্ষে কাজ করে না, এনেছে পার্সিস্টিশন ইউনিট পাওয়া যায়নি: 'নাল' ত্রুটি। এটিকে /src/main/resources/META-INF/persistance.xml
টমসব

1
আমার ধারণা, এটি টপলিংক (বা অন্যান্য ওয়েব-সম্পর্কিত স্টাফ) ব্যবহারকারীদের জন্য প্রযোজ্য , অন্য সবার জন্য এখানে অন্য উত্তরগুলি আরও উপযুক্ত হতে পারে।
সাইমন ফারসবার্গ

2
ধন্যবাদ, আমার জন্য পথটি টার্গেট / ক্লাস / মেটা-আইএনএফ
Frizz1977

একই, কিছু অদ্ভুত কারণে এটি একটি মেটা-আইএনএফ ডিরেক্টরিতে থাকা দরকার, অন্যথায় কাজ করবে না ...
থমাস

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
হাইবারনেট ৪.৩.৫ থেকে ৫.২.১২ এ উন্নীত করা হয়েছিল এবং এই সরবরাহকারীর নাম পরিবর্তনটি আমার জন্য সমস্যাটি স্থির করে। এই সেটিংটি জেপিএকে অস্তিত্ব-ম্যানেজার .jar এর পরিবর্তে মূল .jar ফাইলটি ব্যবহার করার মঞ্জুরি দেয় বলে মনে হয় যা মাভেন কেন্দ্রীয় সংগ্রহস্থলটিতে অবমুক্ত হিসাবে দেখায়। ভাগ করে নেওয়ার জন্য অনেক ধন্যবাদ.
জোশপট

10

আরেকটি বিষয় রয়েছে: আপনি যদি একটি ग्रहण আরসিপি পরিবেশের মধ্যে এই সমস্যার মুখোমুখি হন তবে আপনাকে কারখানার প্রজন্মের থেকে অন্যটিতে পরিবর্তন করতে হতে Persistence.createEntityManagerFactoryপারেnew PersistenceProvider().createEntityManagerFactory

এ বিষয়ে বিস্তারিত আলোচনার জন্য ইসিএফ দেখুন ।


Org.eclipse.persistance.jpa 2.4.0 এর সাথে আমার ঠিক সমস্যাটি ছিল। আমি আক্ষরিকভাবে 2 ঘন্টা আমার চুল টানতে ভাবতে ভাবতে লাগলাম কেন এটি আমার দৃis়তা। Xml খুঁজে পাচ্ছে না। সমস্ত উদাহরণ এটি অন্তর্ভুক্ত বলে মনে হয় না। ওহ ভাল ... অনেক অনেক ধন্যবাদ!
মার্ক মিলার

9

হতে পারে আপনি একজন সরবরাহকারীর মত সংজ্ঞায়িত করেছেন তবে <provider>org.hibernate.ejb.HibernatePersistence</provider>অন্যটিকে জারে উল্লেখ করছেন। আমার সাথে এটি ঘটেছে: আমার অধ্যবসায়। এক্সএমএল সরবরাহকারী ওপেনজপা ছিল কিন্তু আমি আমার ক্লাসপথে গ্রহপরিবর্তন ব্যবহার করছিলাম। এই সাহায্য আশা করি!


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 (এই সাধারণত যখন আপনি হাইবারনেট, বা অন্য কোনও জেপিএ বাস্তবায়ন আপনার ক্লাসপথে অন্তর্ভুক্ত করবেন তখন অন্তর্ভুক্ত

আমার ক্ষেত্রে, আমি জানতে পেরেছি যে মেভেন ভুল কনফিগারেশনের কারণে হাইবারনেট-সত্তাজনিত জারটিকে নির্ভরতা হিসাবে অন্তর্ভুক্ত করা হয়নি, যদিও এটি অন্য মডিউলের ক্ষণস্থায়ী নির্ভরতা ছিল।


/ ফেসপাম - হাইবারনেট সরবরাহকারীর জন্য মাভেন নির্ভরতা যুক্ত করতে ভুলে গিয়েছি। ধন্যবাদ!
jgitter

5

আপনি যদি Eclipse ব্যবহার করছেন তবে নিশ্চিত হয়ে নিন যে বর্জনীয় প্যাটার্নটি আপনার persistence.xmlবিল্ড পাথের উত্স ফোল্ডারগুলি থেকে সরবে না ।

  1. যান প্রোপার্টি -> জাভা বিল্ড পথ -> উত্স ট্যাব
  2. আপনার বর্ধনের ধরণটি যা
    MyProject/src/main/java -> Excluded: <your_pattern>
    ট্রি নোডে অবস্থিত তা পরীক্ষা করুন
  3. Ptionচ্ছিকভাবে Excluded: (None)নোডটি নির্বাচন করে এবং বামদিকে সম্পাদনা ... বোতামটি ক্লিক করে এটিকে সেট করুন

আমার সমস্যার সমাধান। আনার / টানার পরে বাদ দেওয়া প্যাটার্নটি "**" এ সেট করা হয়েছিল। কেন জানি না ...
জোসলিন

5

আমি এখানে পার্টিতে কয়েক বছর দেরি করেছি কিন্তু এইচএসকিউএলডিবি এবং একটি ডেস্কটপ জাভাএফএক্স প্রোগ্রামের সাথে হাইবারনেট ৩.৫.১ কাজ করার চেষ্টা করার সময় আমিও একই ব্যতিক্রম ঘটলাম। আমি এই থ্রেড এবং অনেক পরীক্ষা এবং ত্রুটির সাহায্য নিয়ে কাজ করেছি to দেখে মনে হচ্ছে আপনি সম্পূর্ণ বিভিন্ন সমস্যার জন্য এই ত্রুটিটি পেয়েছেন:

No Persistence provider for EntityManager named mick

হাইবারনেট টিউটোরিয়াল উদাহরণগুলি তৈরি করার চেষ্টা করেছি তবে আমি জাভা 10 ব্যবহার করছিলাম বলে আমি সেগুলি সহজেই তৈরি করতে এবং চালাতে সক্ষম হচ্ছিলাম না। আমি এটি ছেড়ে দিয়েছি, সত্যই এর সমস্যাগুলি ঠিক করতে সময় নষ্ট করতে চাই না। একটি মডিউল- ইন.ফো.জাভা ফাইল (জিগস) সেটআপ করা অন্য একটি হেয়ারবল যা অনেকে এখনও আবিষ্কার করতে পারেনি।

কিছুটা বিভ্রান্তিকর বিষয় হ'ল এই যে (নীচে) আমার বিল্ড.gradle ফাইলটিতে কেবলমাত্র দুটি ফাইলই দরকার ছিল। হাইবারনেট ডকুমেন্টেশন আপনাকে কীসের জারগুলি অন্তর্ভুক্ত করতে হবে তা সম্পর্কে পরিষ্কার নয়। সত্তা-পরিচালক বিভ্রান্তির কারণ হয়েছিলেন এবং সর্বশেষতম হাইবারনেট সংস্করণে আর প্রয়োজন হয় না এবং জাভ্যাক্স.পার্স্পিস্টন-এপিও হয় না। দ্রষ্টব্য, আমি এখানে জাভা 10 ব্যবহার করছি তাই আমাকে কিছু এক্সএমএল-বাইন্ড ত্রুটিগুলি পেতে, পাশাপাশি আমার মডিউল-ইনফো.জাভা ফাইলটিতে জাভা দৃistence়তা মডিউলটির জন্য একটি এন্ট্রি যুক্ত করতে জ্যাক্সবি-এপি অন্তর্ভুক্ত করতে হয়েছিল।

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 এর সাথে আপনার নীচে আপনার জেদ.এক্সএমএল ফাইল সরবরাহকারী নির্দিষ্ট করার দরকার নেই। যদি কোনও সরবরাহ না করা হয় তবে হাইবারনেট সরবরাহকারী ডিফল্টরূপে চয়ন করা হয়।

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

দৃistence়তা.এক্সএমএল ফাইলটি সঠিক ডিরেক্টরিতে অবস্থিত হওয়া উচিত:

src/main/resources/META-INF/persistence.xml

ইন্টেলিজ ডিবাগারে হাইবারনেট সোর্স কোডটি অতিক্রম করা, যেখানে এটি একটি উপভাষার সন্ধান করে, ঠিক একই ব্যতিক্রমটি ছুঁড়ে ফেলেছে, কারণ অধ্যবসায়.এক্সএমএল ফাইলটিতে অনুপস্থিত উপভাষার সম্পত্তি। আমি এটি যুক্ত করেছি (আপনার ডিবি টাইপের জন্য সঠিকটি যোগ করুন):

<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>

এর পরেও আমি একই ব্যতিক্রম পেয়েছি, সুতরাং ইন্টেলিজে আবার ডিবাগারের মধ্য দিয়ে পদক্ষেপ নেওয়ার পরে আমি প্রকাশিত পরীক্ষার সত্তাটি প্রকাশ করেছিলাম (সহজ পিতা-মাতার সন্তানের উদাহরণ) ওয়ানটোমনি, ম্যান্টিটো ওয়ান সম্পর্কের জন্য টীকা অনুপস্থিত। আমি এটি স্থির করেছি এবং ব্যতিক্রম চলে গেল এবং আমার সত্তা ঠিক আছে isted

এখানে আমার সম্পূর্ণ চূড়ান্ত দৃistence়তা। এক্সএমএল:

<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>

আমি সম্ভবত এই রত্নটিতে প্রায় অর্ধেক দিন নষ্ট করেছি। আমার পরামর্শটি খুব সহজ শুরু করতে হবে - এক বা দুটি ক্ষেত্র সহ একক পরীক্ষার সত্তা, যেমন মনে হয় এই ব্যতিক্রমটির অনেকগুলি কারণ থাকতে পারে।


কনফিগারেশন বিশদটির জন্য একটি টন ধন্যবাদ সত্যই এটি সমাধানে সহায়তা করেছে।
ডগল

4

কর্নার কেস: আপনি এম 2 ক্লিপস ব্যবহার করছেন, এটি স্বয়ংক্রিয়ভাবে আপনার সংস্থান ফোল্ডারে বাদ দেয়। তারপরে আপনি যখন গ্রহনের অভ্যন্তরে পরীক্ষা চালানোর চেষ্টা করবেন, তখন অধ্যবসায়। XML এর অনুপস্থিতি এই ত্রুটিটি তৈরি করবে।


3

নিশ্চিত হয়ে নিন যে আপনি 'src' ফোল্ডারের অধীনে দৃistence়তা। XML ফাইল তৈরি করেছেন। আমি প্রকল্পের ফোল্ডারের নীচে তৈরি করেছি এবং এটি আমার সমস্যা ছিল।


4..৪.০ গ্রহনটি এসআরসি ফোল্ডারগুলিতে বাসা বাঁধতে চায় না, তাই আমি মেটা-আইএনএফকে শীর্ষ স্তরে রেখেছিলাম, এই ভেবেই ক্লাসপথের উপর থাকা দৃx়তা x এক্সএমএল পর্যাপ্ত হবে। না! আমাকে ম্যানুয়ালি একটি এসআরসি / মেটা-আইএনএফ (অপারেটিং সিস্টেমে) তৈরি করতে হয়েছিল এবং দৃistence়তা.এক্সএমএল ফাইলটি হাতে নিয়ে যেতে হয়েছিল। সম্ভবত এটিগ্রহণটি করা সম্ভব, তবে আমি এটি বের করতে পারি না।
ফুহরম্যানেটর

3

আপনি যদি মাভেন ব্যবহার করছেন তবে এটি এমন হতে পারে যে এটি মেটা-আইএনএফ ফোল্ডারের জন্য সঠিক জায়গাটির দিকে তাকাচ্ছে না। অন্যরা ফোল্ডারটি অনুলিপি করার কথা উল্লেখ করেছেন, তবে আমার জন্য কাজ করা অন্য উপায়টি ছিল <resources>ট্যাগটি ব্যবহার করে মাভেনকে এটি কোথায় সন্ধান করতে হবে তা জানানো । দেখুন: http://maven.apache.org/plugins/maven-res્રો-- প্লাগইন / উদাহরণসমূহ / রিসোর্স- ডিরেক্টরি ডিরেক্টরি html


2

এটি ঘটে যখন সত্তা ব্যবস্থাপক অনেক অধ্যবসায়ী ইউনিটগুলিকে নির্দেশ করার চেষ্টা করছেন। নিম্নলিখিত পদক্ষেপগুলি করুন:

  1. আপনার সম্পাদকীয় সম্পর্কিত ফাইলটি খুলুন (আপনার প্রকল্পটি আপনার আইডিইতে বন্ধ হয়ে গেছে)
  2. সমস্ত অধ্যবসায় এবং সত্তা পরিচালকের সম্পর্কিত কোড মুছুন
  3. ফাইল সংরক্ষণ করুন
  4. আপনার আইডিইতে প্রকল্পটি খুলুন
  5. এখন আপনার পছন্দের ডিবি বা টেবিলটি আবদ্ধ করুন

2

আমি একই সমস্যার মুখোমুখি হয়েছি তবে এক্সলিপলিংক সংস্করণে 2.5.0

আমি আরও একটি জার ফাইল যুক্ত করে আমার সমস্যার সমাধান করেছি যা অগত্যা ছিল ( javax.persistance_2.1.0.v201304241213.jar.jar );


জারগুলির প্রয়োজন: - javax.persistance_2.1.0.v201304241213.jar
- eclipselink.jar
- jdbc.jar (ব্যবহৃত ডাটাবেসের উপর নির্ভর করে)।

আশা করি এটা কাজে লাগবে.


2

আমারও এই ত্রুটি ছিল তবে সমস্যাটি হ'ল নামের জায়গার ইউরি persistence.xml

আমি প্রতিস্থাপিত http://xmlns.jcp.org/xml/ns/persistenceকরতে http://java.sun.com/xml/ns/persistenceএবং 2.0 2.1 সংস্করণ।

এটা এখন কাজ করে।


টমক্যাট ব্যবহার করে আমার ক্ষেত্রে ঠিক এটি ঘটেছে .. আমি নতুন ব্যবহারকারীদের স্পষ্ট করতে একটি সম্পূর্ণ শিরোনাম যুক্ত করেছি
চাইল্ডনো.ডি

2

ক্লাসপথে আপনাকে হাইবারনেট-সত্তা-পরিচালক. x.jar যুক্ত করতে হবে।

হাইবারনেট ৪.x-এ, জারটি উপস্থিত থাকলে, অধ্যবসতা.এক্সএমএল ফাইলটিতে org.hibernate.ejb.HibernatePersistance যুক্ত করার দরকার নেই।


1

প্রশ্নের উত্তর ইতিমধ্যে দেওয়া হয়েছে, তবে কেবল একটি টিপ পোস্ট করতে চেয়েছিল যা আমাকে ধরে রেখেছে। পূর্ববর্তী ত্রুটিগুলির পরে এই ব্যতিক্রম ছোঁড়াচ্ছিল। আমি এটি পেয়েছিলাম:

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

যদিও আমি নতুন সম্পত্তির নাম অন্তর্ভুক্ত করার জন্য দৃistence়তা। XML পরিবর্তন করেছি:

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

অবহেলিত সম্পত্তির নাম সম্পর্কে বার্তাটি অনুসরণ করার পরে আমি উপরের মতো একই ধরণের দৃistence়তা এবং ব্যতিক্রমের সম্পূর্ণ অন্যান্য স্ট্রিং পাচ্ছি। আমার টিপ: ব্যতিক্রম সসেজের শুরুটি পরীক্ষা করে নেওয়ার বিষয়টি নিশ্চিত করুন।

গ্লাসফিশ v2.1.1 এ একটি বাগ রয়েছে বলে মনে হচ্ছে যেখানে রেডপ্লাই বা আনডপ্লাই এবং মোতায়েনকারীরা দৃistence়তা xxML আপডেট করছে না, যা কোথাও ক্যাশে হচ্ছে। আমাকে সার্ভারটি পুনরায় চালু করতে হয়েছিল এবং তারপরে এটি কাজ করেছিল।


1

কোনও ওএসজিআই-প্রসঙ্গে, বান্ডেলের MANIFEST.MF- এ আপনার অধ্যবসায়ী ইউনিটগুলি তালিকাবদ্ধ করা প্রয়োজন, যেমন

JPA-PersistenceUnits: my-persistence-unit

অন্যথায়, জেপিএ-বান্ডেলটি জানবে না যে আপনার বান্ডলে দৃ pers়তা ইউনিট রয়েছে।

দেখুন http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Developing_with_EclipseLink_OSGi_in_PDE


1

ক্লাসপথে আপনার নীচের জার ফাইলগুলি দরকার:

  1. antlr-2.7.6.jar
  2. Commons-সংগ্রহের-3.1.jar
  3. dom4j-1.6.1.jar
  4. হাইবারনেট-Commons-টীকা-4.0.1.Final.jar
  5. হাইবারনেট কোর-4.0.1.Final.jar
  6. হাইবারনেট-entitymanager.jar
  7. হাইবারনেট-jpa-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. গ্যারোনিমো-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 / মেটা-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. দয়া করে <persistance-واحد> ট্যাগ নামটি নোট করুন, নামটি "নমুনা" হিসাবে উল্লেখ করা হয়েছে । আপনার নাম লোড করার সময় এই নামটি হুবহু ব্যবহার করা দরকার

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 , এটি মাইটা-আইএনএফ হিসাবে চিহ্নিত করেছে উত্স মূল। এটা আমার জন্য কাজ করে.

তবে কেবল উত্স রুট হিসাবে মূল মেটা-আইএনএফ (এটি, এসআরসি / মেইন / জাভা / মেটা-আইএনএফ) চিহ্নিত করা কার্যকর হয় না, যা আমাকে বিভ্রান্ত করে।

এবং এটি কাঠামো: এখানে চিত্র বর্ণনা লিখুন


0

Persistence.createEntityManagerFactory("JPAService")বিভিন্ন ক্লাসে আলাদা আলাদা নাম থাকলে আপনার ত্রুটি হয়। রিফ্যাক্টরিংয়ের মাধ্যমে বিভিন্ন নাম পাওয়া সম্ভব যা আমার ক্ষেত্রে ছিল। এক বর্গ ইন স্বয়ংক্রিয়ভাবে তৈরি Persistence.createEntityManagerFactory("JPAService")মধ্যে private void initComponents(), ContactsTable ক্লাস থেকে ভিন্ন Persistence.createEntityManagerFactory("JPAServiceExtended")DBManager ক্লাসে।


0

আমার <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>দৃ pers়তা.এক্সএমএল উদাহরণে তথ্য যুক্ত করে সমাধান করা হয়েছে এবং তারপরে ক্লাসপথে লাইব্রেরি রয়েছে কিনা তা নিশ্চিত করে মাভেনে নির্ভরতা যুক্ত করুন

<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

দৃistence়তা। Xml ফোল্ডারে ম্যানুয়ালি অনুলিপি করার চেষ্টা করুন <project root>\bin\META-INF। এটি EclipseLink 2.5.2একটি সহজ প্লাগ-ইন প্রকল্প ব্যবহার করে অ্যাকলিপস নিয়নের সমস্যা সমাধান করেছে।


0

একই সমস্যা ছিল, কিন্তু এটি আসলে আমার পক্ষে কাজ করেছে:

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

এনবি: উপরের মাভেন কমান্ড স্ক্র্যাচ থেকে আপনার সমস্ত প্রকল্প নির্ভরতা পুনরায় ইনস্টল করবে। আপনার নেটওয়ার্কের অনুরোধ মাভেন তৈরি হওয়ার কারণে আপনার কনসোলটি ভার্জোজ লগ সহ লোড হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.