Adlı EntityManager için Persistence sağlayıcısı yok


150

Dizinin altında persistence.xmlkullanarak aynı isme sahibim . Ardından, kodumun adı:TopLinkMETA-INF

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

Yine de aşağıdaki hata mesajını aldım:

2009-07-21 09: 22: 41,018 [ana] HATA - agisdb adlı EntityManager için Kalıcılık sağlayıcısı yok
javax.persistence.PersistenceException: agisdb adlı EntityManager için Persistence sağlayıcısı yok
    javax.persistence.Persistence.createEntityManagerFactory'de (Persistence.java:89)
    javax.persistence.Persistence.createEntityManagerFactory'de (Persistence.java:60)

İşte 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>

Sınıf yolunda olmalıydı. Yine de yukarıdaki hatayı aldım.

Yanıtlar:


85

Ardından <persistence-unit name="agisdb">kalıcılık sağlayıcı adını tanımlayın:

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

5
Derby kullanıyorum ve bunu belirtmeye gerek yoktu (yaptım, ancak sorunu çözdükten sonra emin olmak için kaldırdım). Sonunda hatayı alıyordum çünkü, projenin Eclipse kaynak yolundaki bir klasörde olmasına rağmen, persistence.xml src / META-INF klasöründe değildi. Bir yerde src / * 'de olmanın sabit olduğunu düşünüyorum
Fuhrmanator

6
bu benim durumumda gerekli değildi, ancak Ualter Jr'ın aşağıdaki yanıtında belirtildiği gibi sınıf yolu hazırda bekletme-varlık yöneticisi * .jar . Hibernate-core-4.3.7.jar , hibernate-entitymanager-4.3.7.Final.jar ve hibernate-jpa-2.1-api-1.0.0.jar ile bağımsız bir GWT uygulaması kullanıyorum .
Andreas Dietrich

3
@AndreasDietrich ile aynı, pom.xml'de "hibernate-core-4.3.10" artefaktını "hibernate-entitymanager-4.3.10" ile değiştirdikten sonra (maven kullanıyorum) bu hata ortadan kalktı. Aslında, hibernate.org/orm/downloads , JPA için "hibernate-entitymanager-4.3.10" kullanmanız gerektiğini söylüyor.
Hong

1
Bunun dışında, hibernate-entitymanager-3.4.0.GA'dan 3.6.10.Final'e geçmek zorunda kaldım . Hibernate 3 kullanarak hala eski bir kod tabanınız varsa diye.
Javi Vazquez

6
Ben biraz sizinle bir sorunla yok şaşırdı değilim senin <provider/>, hibernate-4 kullanırken için size sağlayıcı değiştirmelisiniz <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>, bkz stackoverflow.com/questions/23041964/... .
Robert Heine

87

"hibernate-entitymanager.jar"Uygulamayı sınıf yoluna koyun .
Daha yeni sürümler için, kullanımdan "hibernate-core.jar"kaldırılan yerine kullanmalısınızhibernate-entitymanager

Eclipse gibi bir IDE'den geçiyorsan :Project Properties -> Java Build Path -> Libraries.

Aksi takdirde /lib, başvurunuzun içine koyun .


3
Nedenin bu olduğunu anlamam birkaç saatimi aldı. Hibernate 4.1.3 durumunda bu kanlı kavanozu arayan diğer kişiler için, hazırda bekletme-serbest bırakma-4.1.3.Final \ lib \ jpa \ hibernate-entitymanager-4.1.3.Final.jar
Vedran

8
Ve Maven kullanan bizler için, bu gruplu bir org.hibernateeser olacaktırhibernate-entitymanager
Simon Forsberg

2
Benim için yolda eksik olan eclipselink.jar oldu. Hiçbir yolda hazırda bekletme * bir şey.jar yok.
kullanıcı bilinmiyor

3
Kalıcılık.xml'nin sınıf yolunda olduğunu doğrulamak ve bunun için çalıştığı ve işe yaramadığı bir projenin her yönünü karşılaştırmak için birkaç saat harcadım. Kalıcılık.xml eksikse, bu ada sahip PU yoksa veya görünüşe göre bir hazırda bekletme kavanozu eksikse meydana gelebileceği için çok yanıltıcı bir hata mesajı!
David Mann

Benim için org.eclipse.persistence.jpakapsam testiydi.
Marek

66

persistence.xmlDosyanın dizinde olduğundan emin olun :<webroot>/WEB-INF/classes/META-INF


8
bu benim için işe yaramadı, Persistence birimi bulunamadı: 'null' hatası getirdi. /Src/main/resources/META-INF/persistence.xml'e geri taşınıyor
tomasb

1
Sanırım bu, toplink (veya web ile ilgili diğer şeyler) kullananlar için geçerlidir, diğer herkes için buradaki diğer cevaplar daha uygun olabilir.
Simon Forsberg

2
Teşekkürler, benim için yol hedef / sınıflar / META-INF
Frizz1977

Aynı, bir META-INF dizininde olması gerekir bazı garip nedenle, aksi olmaz işler ...
Thomas

17

Buna pom.xml dosyamda ihtiyacım vardı:

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

4.3.11 sürümü için çalışır.
petertc

Kullanımdan kaldırıldı, yukarıya bakın. Bunun yerine hazırda bekletme çekirdeğini kullanın.
foo

16

Aynı sorunla karşılaştı ve uzun süre çözüm bulamadı. Benim durumumda değiştirilmesine yardımcı oldu

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

ile

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

Buradan çözüm aldı


2
Hibernate 4.3.5'ten 5.2.12'ye yükseltiliyordu ve bu sağlayıcı adı değişikliği benim için sorunu çözdü. Bu ayar, JPA'nın Maven merkezi deposunda kullanımdan kaldırılmış olarak gösterilen varlık yöneticisi .jar yerine çekirdek .jar dosyasını kullanmasına izin veriyor gibi görünüyor. Paylaştığınız için çok teşekkürler.
joshpt

10

Başka bir nokta daha var: Eclipse RCP ortamında bu sorunla karşılaşırsanız, Factory neslini olarak değiştirmeniz gerekebilir Persistence.createEntityManagerFactory.new PersistenceProvider().createEntityManagerFactory

bununla ilgili ayrıntılı tartışma için ECF'ye bakınız .


Org.eclipse.persistence.jpa 2.4.0 ile yaşadığım tam sorun buydu. Neden persisence.xml'imi bulamadığını merak ederek 2 saatimi saçımı çekerek geçirdim. Bütün örnekler bunu içermiyor gibi görünüyor. oh peki ... çok çok teşekkürler!
Mark Miller

9

Belki bir sağlayıcıyı tanımladınız, <provider>org.hibernate.ejb.HibernatePersistence</provider>ancak başka birini kavanozda referans veriyorsunuz . Bu benim başıma geldi: persistence.xml sağlayıcım openjpa idi ancak sınıf yolumda eclipselink kullanıyordum. Umarım bu yardımcı olur!


7

Hızlı tavsiye:

  • Kalıcılık.xml'nin sınıf yolunuzda olup olmadığını kontrol edin
  • Hazırda bekletme sağlayıcısının sınıf yolunuzda olup olmadığını kontrol edin

JPA'yı bağımsız uygulamada (JavaEE dışında) kullanırken, bir yerde kalıcılık sağlayıcısının belirtilmesi gerekir. Bu benim bildiğim iki şekilde yapılabilir:

Benim durumumda, maven yanlış yapılandırması nedeniyle, diğer modülün geçici bir bağımlılığı olsa bile, hibernate-entitymanager jar'in bir bağımlılık olarak dahil edilmediğini öğrendim.


/ facepalm - Hazırda bekletme sağlayıcısı için maven bağımlılığını eklemeyi unuttum. Teşekkür ederim!
jgitter

5

Eclipse kullanıyorsanız, dışlama modelinin persistence.xmlderleme yolundaki kaynak klasörlerden sizi kaldırmadığından emin olun .

  1. Git Özellikleri -> Java Build Path -> Kaynak sekmesi
  2. Adresinde bulunan hariç tutma modelinizi kontrol edin
    MyProject/src/main/java -> Excluded: <your_pattern>
    Ağaç düğümünde
  3. İsteğe bağlı olarak, Excluded: (None)düğümü seçip soldaki Düzenle ... düğmesini tıklayarak ayarlayın .

Sorunumu çözdüm. Hariç tutulan kalıp, bir getirme / çekme işleminden sonra "**" olarak ayarlandı. Neden bilmiyorum ...
Jocelyn

5

Partiye birkaç yıl geç kaldım ama aynı istisnayı HSQLDB ve masaüstü JavaFX programı ile çalışan Hibernate 3.5.1'i almaya çalışırken yakaladım. Bu iş parçacığının ve birçok deneme yanılmanın yardımıyla çalışmasını sağladım. Görünüşe göre bu hatayı çok çeşitli sorunlar için alıyorsunuz:

No Persistence provider for EntityManager named mick

Hazırda bekletme öğretici örneklerini oluşturmayı denedim, ancak Java 10 kullandığım için onları kolayca oluşturup çalıştırmalarını sağlayamadım. Ondan vazgeçtim, sorunlarını çözmek için gerçekten zaman harcamak istemiyordum. Module-info.java dosyası (Jigsaw) oluşturmak, birçok insanın henüz keşfetmediği başka bir tüy yumağıdır.

Biraz kafa karıştırıcı, bunların (aşağıda) build.gradle dosyamda ihtiyacım olan tek iki dosya olması. Hazırda Bekletme belgeleri tam olarak hangi Kavanozları eklemeniz gerektiği konusunda net değil. Varlık yöneticisi kafa karışıklığına neden oluyordu ve artık en son Hibernate sürümünde gerekmiyor, ne de javax.persistence-api. Not, burada Java 10 kullanıyorum, bu nedenle bazı xml-bind hatalarını gidermek için jaxb-api'yi eklemem ve module-info.java dosyama java kalıcılık modülü için bir giriş eklemem gerekti.

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;

Hazırda bekletme 5.3.1 ile birlikte, aşağıda, persistence.xml dosyanızda sağlayıcıyı belirtmeniz gerekmez. Sağlanmamışsa, Hazırda Bekletme sağlayıcısı varsayılan olarak seçilir.

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

Kalıcılık.xml dosyası doğru dizinde bulunmalıdır, bu nedenle:

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

Bir lehçe için kontrol yaptığı Intellij hata ayıklayıcısındaki hazırda bekletme kaynak kodunda ilerlemek de, persistence.xml dosyasındaki eksik bir lehçe özelliği nedeniyle aynı istisnayı attı. Bunu ekledim (DB türünüz için doğru olanı ekleyin):

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

Bundan sonra hala aynı istisnaya sahibim, bu yüzden Intellij'de hata ayıklayıcıya tekrar adım atmak, devam etmeye çalıştığım test varlığının (basit ebeveyn-çocuk örneği) OneToMany, ManyToOne ilişkileri için eksik ek açıklamaları olduğunu ortaya çıkardı. Bunu düzelttim ve istisna ortadan kalktı ve varlıklarım kalıcı oldu.

İşte tam son persistence.xml'im:

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

Muhtemelen bu mücevher için yaklaşık yarım günümü boşa harcadım. Benim tavsiyem çok basit bir şekilde başlamaktır - bir veya iki alanlı tek bir test varlığı, çünkü bu istisnanın birçok nedeni olabilir gibi görünüyor.


Konfigürasyon detayları için çok teşekkürler Çözmemize gerçekten yardımcı oldum.
Doogle

4

Köşe kasa: m2Eclipse kullanıyorsanız, kaynak klasörlerinize otomatik olarak dışlamalar koyar. Daha sonra tutulma içinde testler çalıştırmayı denediğinizde, daha sonra kalıcılık.xml'nin olmaması bu hatayı üretecektir.


3

'Src' klasörü altında kalıcılık.xml dosyası oluşturduğunuzdan emin olun. Proje klasörü altında oluşturdum ve bu benim sorunumdu.


Eclipse 4.4.0, SRC klasörlerini yuvalamak istemiyor, bu yüzden META-INF'i en üst seviyeye koyuyordum, persistence.xml'nin sınıf yolunda olmasının yeterli olacağını düşünüyordum. DEĞİL! Manuel olarak bir src / META-INF (işletim sisteminde) oluşturmalı ve kalıcılık.xml dosyasını elle hareket ettirmeliydim. Belki Eclipse'de bunu yapmak mümkündür, ama ben çözemedim.
Fuhrmanator


2

Varlık yöneticisi birçok kalıcılık birimine işaret etmeye çalışırken gerçekleşir. Aşağıdaki adımları uygulayın:

  1. ilgili dosyayı editörünüzde açın (projenizin IDE'nizde kapatılmış olması koşuluyla)
  2. kalıcılık ve varlık yöneticisi ile ilgili tüm kodu silin
  3. Dosya 'yı kaydet
  4. IDE'nizde projeyi açın
  5. şimdi seçtiğiniz db veya tabloyu bağlayın

2

Aynı sorunla karşılaştım, ancak EclipseLink sürüm 2.5.0'da .

Sorunumu, mutlaka başka bir jar dosyası ekleyerek çözdüm (Sorunumu çözdüm javax.persistence_2.1.0.v201304241213.jar.jar );

Gerekli kavanozlar:
- javax.persistence_2.1.0.v201304241213.jar
- eclipselink.jar
- jdbc.jar (kullanılan veritabanına bağlı olarak).

Umarım bu yardımcı olur.


2

Ben de bu hatayı aldım ama sorun şu ad alanı uri'siydi persistence.xml .

Ben yerini http://xmlns.jcp.org/xml/ns/persistenceetmekhttp://java.sun.com/xml/ns/persistence 2,0 sürüm 2.1 ve.

Şimdi çalışıyor.


Tomcat kullanırken başıma gelen tam olarak buydu .. Yeni kullanıcıları açıklığa kavuşturmak için tam bir başlık ekledim
childno͡.de

2

Sınıf yoluna hibernate-entitymanager-x.jar dosyasını eklemeniz gerekir.

Hibernate 4.x'te, kavanoz varsa, kalıcılık.xml dosyasına org.hibernate.ejb.HibernatePersistence eklemeye gerek yoktur.


1

Soru zaten cevaplandı, ancak beni tutan bir ipucu göndermek istedim. Bu istisna, önceki hatalardan sonra atılıyordu. Bunu alıyordum:

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

Kalıcılık.xml'yi yeni özellik adını içerecek şekilde değiştirmiş olsam da:

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

Kullanımdan kaldırılan özellik adıyla ilgili mesajı takiben, yukarıdaki gibi aynı PersistenceException ve diğer bir istisna dizesi alıyordum. Tavsiyem: İstisna sosisinin başlangıcını kontrol ettiğinizden emin olun.

Glassfish v2.1.1'de, yeniden dağıtılan veya kaldırılanların ve dağıtımların bir yerde önbelleğe alınan persistence.xml dosyasını güncellemediği bir hata var gibi görünüyor. Sunucuyu yeniden başlatmam gerekti ve sonra çalıştı.



1

Sınıf yolunda aşağıdaki jar dosyalarına ihtiyacınız var:

  1. antlr-2.7.6.jar
  2. commons-collections-3.1.jar
  3. dom4j-1.6.1.jar
  4. hibernate-commons-annotations-4.0.1.Final.jar
  5. hibernate-core-4.0.1.Final.jar
  6. hibernate-entitymanager.jar
  7. hibernate-jpa-2.0-api-1.0.0.Final.jar
  8. javassist-3.9.0.jar
  9. jboss-logging-3.1.1.GA.jar
  10. jta-1.1.jar
  11. slf4j-api-1.5.8.jar
  12. xxx-jdbc-driver.jar


1

Hazırda Bekletme 5.2.5
Sınıf yolunda Gerekli Jar Dosyaları. Bu, Hibernate 5.2.5 Son sürümünün gerekli bir klasörü içindedir. Http://hibernate.org/orm/downloads/ adresinden indirilebilir.

  1. antlr-2.7.7
  2. cdi-api-1.1
  3. sınıf arkadaşı-1.3.0
  4. dom4j-1.6.1
  5. el-api-2.2
  6. geronimo-jta_1.1_spec-1.1.1
  7. hazırda bekletme-ortak-açıklama -5.0.1.Final
  8. hibernate-core-5.2.5.Final
  9. hazırda bekletme-jpa-2.1-api-1.0.0.Final
  10. jandex-2.0.3.Final
  11. javassist-3.20.0-GA
  12. javax.inject-1
  13. jboss-interceptor-api_1.1_spec-1.0.0.Beta1
  14. jboss-logging-3.3.0.Final
  15. jsr250-api-1.0

"Persistence.xml" adlı bir xml dosyası oluşturun .

Projeniz / 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. <persistance> etiketinde belirtilen bilgileri not edin ve sürüm 2.1 olmalıdır.
  2. Lütfen <persistance-unit> etiketinin ismine dikkat edin, isim "örnek" olarak geçiyor . Bu ad, cihazınız yüklenirken tamamen aynı şekilde kullanılmalıdır.

EntityManagerFactor = Persistance.createEntityManagerFactory ("örnek"); . "örnek", adlandırma kuralınıza göre değiştirilebilir.

Şimdi bir Varlık sınıfı oluşturun. org.pramod.data.object paketindeki UserDetail örneğime göre ad ile

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 + "]";
    }
}

Şimdi ana yöntemle bir sınıf oluşturun.

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();
        }

    }

}

Çıktı olacak

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

Benim durumumda, daha önce veritabanı şemasına göre varlık oluşturmak için fikir kullanıyordum ve persistence.xmlotomatik olarak içinde üretiliyor src/main/java/META-INFve https://stackoverflow.com/a/23890419/10701129'a göre onu src/main/resources/META-INF, META-INF olarak da işaretliyorum. kaynak kökü. Benim için çalışıyor.

Ancak sadece orijinal META-INF'i (yani src / main / java / META-INF) kaynak kök olarak işaretlemek işe yaramıyor, bu da kafamı karıştırıyor.

ve bu yapı: görüntü açıklamasını buraya girin


0

Persistence.createEntityManagerFactory("JPAService")Farklı sınıflarda farklı isimler varsa, hatayı alırsınız. Yeniden düzenleme ile benim durumumda olan farklı isimler almak mümkündür . Bir sınıf olarak otomatik olarak oluşturulmuş Persistence.createEntityManagerFactory("JPAService")içerisinde private void initComponents(), ContactsTable sınıf farklılık Persistence.createEntityManagerFactory("JPAServiceExtended")DBManager sınıfında.


0

Benimki, örneğin, persistence.xml'ye bilgi ekleyerek <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>ve ardından sınıf yolunda kitaplığa sahip olduğunuzdan emin olarak çözüldü, örneğin, Maven'de, gibi bağımlılık ekleyin

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

0

Kalıcı birim adını doğrulayın

<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

Benim durumumda, aşağıdaki gibi iki özellikte hata ile ilgiliydi. Onları değiştirdiğimde 'adlı EntityManager için Kalıcılık sağlayıcı yok' kayboldu.

Böylece her şeyin doğru olup olmadığını kontrol etmek için mülklerinizle bağlantıyı test etmeyi deneyebilirsiniz.

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

Garip bir hata, bundan dolayı tamamen kafam karıştı.


0

Kalıcılık.xml dosyasını manuel olarak klasöre kopyalamayı da deneyin <project root>\bin\META-INF. Bu, Eclipse Neon'daki sorunu EclipseLink 2.5.2basit bir eklenti projesi kullanarak çözdü .


0

Aynı sorunu yaşadım ama bu aslında benim için çalıştı:

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

NB: Yukarıdaki maven komutu, tüm proje bağımlılıklarınızı sıfırdan yeniden yükleyecektir. Konsolunuz, maven'in yaptığı ağ isteği nedeniyle ayrıntılı günlüklerle yüklenecektir.


0

Dosyanın mutlak yolunu kullanmanız gerekir, aksi takdirde bu işe yaramaz. Sonra bu yolla dosyayı oluştururuz ve yapılandırmaya aktarırız.

@Throws(HibernateException::class)
fun getSessionFactory() : SessionFactory {
    return Configuration()
                .configure(getFile())
                .buildSessionFactory()
    }


private fun getFile(canonicalName: String): File {
    val absolutePathCurrentModule = System.getProperty("user.dir")
    val pathFromProjectRoot = absolutePathCurrentModule.dropLastWhile { it != '/' }
    val absolutePathFromProjectRoot = "$pathFromProjectRoot/module-name/src/main/resources/$canonicalName"
    println("Absolute Path of secret-hibernate.cfg.xml: $absolutePathFromProjectRoot")
    return File(absolutePathFromProjectRoot)
}

GL

Kaynak

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.