Rumah  >  Artikel  >  Java  >  Hibernate 5: Mengapa Saya Mendapat Ralat \"org.hibernate.MappingException: Entiti Tidak Diketahui\" dan Bagaimana Saya Membetulkannya?

Hibernate 5: Mengapa Saya Mendapat Ralat \"org.hibernate.MappingException: Entiti Tidak Diketahui\" dan Bagaimana Saya Membetulkannya?

Barbara Streisand
Barbara Streisandasal
2024-10-28 16:21:02143semak imbas

  Hibernate 5: Why am I Getting the

Hibernate 5: Menyelesaikan "org.hibernate.MappingException: Ralat Entiti Tidak Diketahui"

Masalah:

Anda telah menemui ralat "org.hibernate.MappingException: Entiti tidak diketahui" semasa cuba mengintegrasikan Hibernate 5.0 dengan MySQL. Ralat ini berlaku dengan Hibernate versi 5.0.0 dan 5.0.1 tetapi tidak dengan Hibernate 4.3.9.

Punca:

Isu ini timbul disebabkan oleh perubahan dalam cara SessionFactory dicipta dengan Hibernate 5. Menggunakan kaedah Configuration().buildSessionFactory(sr) seperti dalam versi terdahulu Hibernate tidak lagi berfungsi, kerana ia membuang maklumat pemetaan.

Penyelesaian:

Untuk menyelesaikan ralat ini, terdapat dua pendekatan:

1. Konfigurasi Ringkas:

Untuk fail konfigurasi standard seperti hibernate.cfg.xml dan hibernate.properties, anda boleh mencipta SessionFactory tanpa menggunakan ServiceRegistry:

<code class="java">SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();</code>

2. Menggunakan StandardServiceRegistryBuilder untuk Memuatkan Sifat:

Jika anda mempunyai sifat dalam fail selain hibernate.properties, anda boleh menggunakan StandardServiceRegistryBuilder untuk memuatkannya:

Memuatkan Sifat sebagai Sumber:

<code class="java">ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);</code>

Memuatkan Sifat daripada Laluan Sistem Fail:

<code class="java">File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);</code>

Nota Tambahan:

  • Tutorial Hibernate 5 mengandungi pendekatan yang salah untuk mencipta SessionFactory. Ia menunjukkan kaedah new Configuration().configure().buildSessionFactory(new StandardServiceRegistryBuilder().build()), yang tidak mengkonfigurasi Hibernate dengan betul.
  • Isu ini menjejaskan versi Hibernate 5.0.0 dan 5.0.1 . Untuk Hibernate 5.1 dan lebih baru, kaedah konfigurasi asal Configuration().buildSessionFactory(sr) berfungsi seperti yang diharapkan.

Atas ialah kandungan terperinci Hibernate 5: Mengapa Saya Mendapat Ralat \"org.hibernate.MappingException: Entiti Tidak Diketahui\" dan Bagaimana Saya Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn