Saya punya saya persistence.xml
dengan nama yang sama menggunakan di TopLink
bawah META-INF
direktori. Lalu, saya minta kode saya memanggilnya dengan:
EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb");
Namun, saya mendapat pesan kesalahan berikut:
2009-07-21 09: 22: 41.018 [main] ERROR - Tidak ada penyedia Kegigihan untuk EntityManager bernama agisdb javax.persistence.PersistenceException: Tidak ada penyedia Persistence untuk EntityManager bernama agisdb di javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:89) di javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:60)
Ini dia 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>
Seharusnya di classpath. Namun, saya mendapat kesalahan di atas.
java
jpa
persistence
toplink
Robert A Henru
sumber
sumber
<provider/>
, saat menggunakan hibernate-4 Anda harus mengubah penyedia Anda<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
, lihat stackoverflow.com/questions/23041964/… .Taruh
"hibernate-entitymanager.jar"
di classpath aplikasi.Untuk versi yang lebih baru, Anda harus menggunakan
"hibernate-core.jar"
bukannya yang usanghibernate-entitymanager
Jika Anda menjalankan beberapa IDE, seperti Eclipse :
Project Properties -> Java Build Path -> Libraries.
Kalau tidak, letakkan di
/lib
aplikasi Anda.sumber
org.hibernate
artefak groupidhibernate-entitymanager
org.eclipse.persistence.jpa
dengan tes ruang lingkup.Pastikan
persistence.xml
file tersebut ada di direktori:<webroot>/WEB-INF/classes/META-INF
sumber
Saya membutuhkan ini di file pom.xml saya:
sumber
Menghadapi masalah yang sama dan tidak bisa menemukan solusi untuk waktu yang cukup lama. Dalam kasus saya, itu membantu untuk menggantikan
dengan
Mengambil solusi dari sini
sumber
Ada hal lain: Jika Anda menghadapi masalah ini dalam lingkungan Eclipse RCP, Anda mungkin harus mengubah generasi Pabrik dari
Persistence.createEntityManagerFactory
menjadinew PersistenceProvider().createEntityManagerFactory
lihat ECF untuk diskusi terperinci tentang ini.
sumber
Mungkin Anda mendefinisikan satu penyedia seperti
<provider>org.hibernate.ejb.HibernatePersistence</provider>
tetapi merujuk yang lain ke dalam toples. Itu terjadi pada saya: penyedia persistence.xml saya adalah openjpa tapi saya menggunakan eclipselink di classpath saya. Semoga bantuan ini!sumber
Saran cepat:
Dengan menggunakan JPA di aplikasi mandiri (di luar JavaEE), penyedia ketekunan perlu ditentukan di suatu tempat. Ini bisa dilakukan dengan dua cara yang saya tahu:
<provider>org.hibernate.ejb.HibernatePersistence</provider>
(seperti yang dijelaskan dalam jawaban yang benar oleh Chris: https://stackoverflow.com/a/1285436/784594 )Dalam kasus saya, saya menemukan bahwa karena kesalahan konfigurasi pakar, hibernate-entitasmanager jar tidak dimasukkan sebagai dependensi, bahkan jika itu adalah dependensi sementara dari modul lain.
sumber
Jika Anda menggunakan Eclipse pastikan bahwa pola pengecualian tidak menghapus Anda
persistence.xml
dari folder sumber di jalur pembuatan.MyProject/src/main/java -> Excluded: <your_pattern>
simpul pohon
Excluded: (None)
dengan memilih simpul dan mengklik tombol Edit ... di sebelah kiri.sumber
Saya beberapa tahun terlambat ke pesta di sini tapi saya mendapatkan pengecualian yang sama ketika mencoba untuk membuat Hibernate 3.5.1 bekerja dengan HSQLDB dan program JavaFX desktop. Saya membuatnya bekerja dengan bantuan utas ini dan banyak trial and error. Tampaknya Anda mendapatkan kesalahan ini untuk berbagai macam masalah:
Saya mencoba membuat contoh tutorial hibernate tetapi karena saya menggunakan Java 10, saya tidak bisa membuatnya untuk dibangun dan dijalankan dengan mudah. Saya menyerah pada hal itu, tidak benar-benar ingin membuang waktu untuk memperbaiki masalahnya. Menyiapkan file module-info.java (Jigsaw) adalah hairball lain yang belum ditemukan banyak orang.
Agak membingungkan adalah bahwa ini (di bawah) adalah dua file yang saya butuhkan dalam file build.gradle saya. Dokumentasi Hibernate tidak jelas tentang guci mana yang perlu Anda sertakan. Entity-manager menyebabkan kebingungan dan tidak lagi diperlukan dalam versi Hibernate terbaru, dan begitu pula javax.persistence-api. Catatan, saya menggunakan Java 10 di sini jadi saya harus memasukkan jaxb-api, untuk mengatasi beberapa kesalahan xml-bind, serta menambahkan entri untuk modul persistensi java di file module-info.java saya.
Build.gradle
Module-info.java
Dengan hibernate 5.3.1 Anda tidak perlu menentukan penyedia, di bawah ini, dalam file persistence.xml Anda. Jika tidak disediakan penyedia Hibernate dipilih secara default.
File persistence.xml harus berada di direktori yang benar sehingga:
Melangkah melalui kode sumber hibernate di debugger Intellij, di mana ia memeriksa dialek, juga melemparkan pengecualian yang sama persis, karena properti dialek yang hilang dalam file persistence.xml. Saya menambahkan ini (tambahkan yang benar untuk tipe DB Anda):
Saya masih mendapatkan pengecualian yang sama setelah ini, jadi melangkah melalui debugger lagi di Intellij mengungkapkan entitas tes yang saya coba bertahan (contoh orangtua-anak sederhana) telah kehilangan penjelasan untuk hubungan OneToMany, ManyToOne. Saya memperbaikinya dan pengecualian hilang dan entitas saya bertahan ok.
Inilah kegigihan akhir lengkap saya.xml:
Saya mungkin menghabiskan sekitar setengah hari untuk permata ini. Saran saya adalah memulai dengan sangat sederhana - entitas uji tunggal dengan satu atau dua bidang, karena sepertinya pengecualian ini dapat memiliki banyak penyebab.
sumber
Kasing sudut: jika Anda menggunakan m2Eclipse, maka secara otomatis dimasukkan ke dalam folder sumber daya Anda. Kemudian ketika Anda mencoba menjalankan tes di dalam gerhana, ketiadaan persistensi berikutnya. Xml akan menghasilkan kesalahan ini.
sumber
Pastikan Anda telah membuat file persistence.xml di bawah folder 'src'. Saya buat di bawah folder proyek dan itu adalah masalah saya.
sumber
Jika Anda menggunakan Maven, bisa jadi itu tidak mencari tempat yang tepat untuk folder META-INF. Yang lain menyebutkan menyalin folder, tetapi cara lain yang berhasil bagi saya adalah memberi tahu Maven di mana mencarinya, menggunakan
<resources>
tag. Lihat: http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.htmlsumber
Itu terjadi ketika manajer entitas mencoba menunjuk ke banyak unit kegigihan. Lakukan langkah-langkah berikut:
sumber
Saya menghadapi masalah yang sama, tetapi pada EclipseLink versi 2.5.0 .
Saya memecahkan masalah saya dengan menambahkan lagi file jar yang seharusnya ( javax.persistence_2.1.0.v201304241213.jar.jar );
Jars diperlukan:
- javax.persistence_2.1.0.v201304241213.jar
- eclipselink.jar
- jdbc.jar (tergantung pada database yang digunakan).
Saya harap ini membantu.
sumber
Saya juga punya kesalahan ini tetapi masalahnya adalah namespace uri di
persistence.xml
.Saya diganti
http://xmlns.jcp.org/xml/ns/persistence
menjadihttp://java.sun.com/xml/ns/persistence
dan versi 2.1 ke 2.0.Sekarang bekerja.
sumber
Anda perlu menambahkan hibernate-entitasmanager-x.jar di classpath.
Di Hibernate 4.x, jika toples hadir, maka tidak perlu menambahkan org.hibernate.ejb.HibernatePersistence dalam file persistence.xml.
sumber
Pertanyaannya sudah dijawab, tetapi hanya ingin mengirim tip yang menahan saya. Pengecualian ini dilempar setelah kesalahan sebelumnya. Saya mendapatkan ini:
Meskipun saya telah mengubah persistence.xml untuk memasukkan nama properti baru:
Mengikuti pesan tentang nama properti yang sudah tidak digunakan lagi, saya mendapatkan PersistenceException yang sama seperti di atas dan serangkaian pengecualian lainnya. Tip saya: pastikan untuk memeriksa awal sosis pengecualian.
Tampaknya ada bug di Glassfish v2.1.1 di mana redeploys atau undeploys dan deploys tidak memperbarui persistence.xml, yang sedang di-cache di suatu tempat. Saya harus me-restart server dan kemudian berhasil.
sumber
Dalam konteks OSGi, perlu untuk mendaftarkan unit kegigihan Anda di MANIFEST.MF bundel, misalnya
Jika tidak, bundel JPA tidak akan tahu bundel Anda berisi unit persistensi.
Lihat http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Developing_with_EclipseLink_OSGi_in_PDE .
sumber
Anda memerlukan file jar berikut di classpath:
sumber
Saya baru saja menyalin META-INF ke src dan berhasil!
sumber
Hibernate 5.2.5
Jar File Diperlukan di jalur kelas. Ini berada di dalam folder Hibernate 5.2.5 Final yang diperlukan. Itu dapat diunduh dari http://hibernate.org/orm/downloads/
Buat file xml "persistence.xml" di
Proyek Anda / src / META-INF / persistence.xml
persistence.xml
EntityManagerFactor = Persistance.createEntityManagerFactory ("sample"); . "sample" dapat diubah sesuai dengan konvensi penamaan Anda.
Sekarang buat kelas Entity. dengan nama sesuai contoh saya UserDetail, dalam paket org.pramod.data.object
UserDetail.java
Sekarang buat kelas dengan metode utama.
HibernateTest.java
Output akan menjadi
sumber
Dalam kasus saya, sebelumnya saya menggunakan ide untuk menghasilkan entitas dengan skema database, dan
persistence.xml
secara otomatis dihasilkansrc/main/java/META-INF
, dan menurut https://stackoverflow.com/a/23890419/10701129 , saya memindahkannya kesrc/main/resources/META-INF
, juga menandai META-INF sebagai akar sumber. Ini bekerja untuk saya.Tetapi hanya dengan menandai META-INF asli (yaitu, src / main / java / META-INF) sebagai sumber root, tidak berfungsi, yang membingungkan saya.
dan ini adalah struktur:
sumber
Jika ada nama yang berbeda di
Persistence.createEntityManagerFactory("JPAService")
dalam kelas yang berbeda dari Anda mendapatkan kesalahan. Dengan refactoring dimungkinkan untuk mendapatkan nama yang berbeda dalam kasus saya. Dalam satu kelas yang dihasilkanPersistence.createEntityManagerFactory("JPAService")
secara otomatisprivate void initComponents()
, kelas ContactsTable berbeda dariPersistence.createEntityManagerFactory("JPAServiceExtended")
di kelas DBManager.sumber
Milik saya diselesaikan dengan menambahkan info dalam persistence.xml misalnya
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
dan kemudian memastikan Anda memiliki perpustakaan di classpath misalnya di Maven tambahkan ketergantungan sepertisumber
Verifikasi nama unit yang terus-menerus
sumber
Dalam kasus saya ini adalah tentang kesalahan dalam dua properti seperti di bawah ini. Ketika saya mengubah mereka 'No Persistence provider untuk EntityManager yang bernama' dihilangkan.
Jadi, Anda dapat mencoba menguji koneksi dengan properti Anda untuk memeriksa apakah semuanya sudah benar.
Kesalahan aneh, saya benar-benar bingung karenanya.
sumber
Coba juga salin persistence.xml secara manual ke folder
<project root>\bin\META-INF
. Ini memperbaiki masalah di Eclipse Neon denganEclipseLink 2.5.2
menggunakan proyek plug-in yang sederhana.sumber
Punya masalah yang sama, tetapi ini sebenarnya bekerja untuk saya:
NB: Perintah pakar di atas akan menginstal ulang semua dependensi proyek Anda dari awal. Konsol Anda akan dimuat dengan log verbose karena permintaan jaringan dibuat oleh pakar.
sumber