Rumah  >  Artikel  >  Java  >  Mengapa saya mendapat Ralat \"org.hibernate.MappingException: Entiti tidak diketahui\" dalam Penyepaduan Hibernate 5.0 dengan MySQL?

Mengapa saya mendapat Ralat \"org.hibernate.MappingException: Entiti tidak diketahui\" dalam Penyepaduan Hibernate 5.0 dengan MySQL?

DDD
DDDasal
2024-11-01 21:13:02489semak imbas

Why am I getting

Hibernate 5: Menemui "org.hibernate.MappingException: Unknown entity" dalam Hibernate-MySQL Integration

Apabila cuba mengintegrasikan Hibernate 5.0 dengan pangkalan data MySQL, pengguna mungkin menghadapi mesej ralat "org.hibernate.MappingException: Entiti tidak diketahui." Isu ini kebanyakannya mempengaruhi versi Hibernate 5.0.0 dan 5.0.1, manakala versi terdahulu seperti 4.3.9 berfungsi dengan betul.

Untuk menangani masalah ini, adalah penting untuk memahami perubahan yang diperkenalkan dalam Hibernate 5. Dalam versi 4 dan sebelum ini, Hibernate sangat bergantung pada StandardServiceRegistryBuilder. Walau bagaimanapun, dalam Hibernate 5, konfigurasi процессе telah diubah.

Amalan Konfigurasi Salah:

Kod berikut, yang berfungsi dalam Hibernate 4.3.5 tetapi gagal dalam Hibernate 5, menunjukkan konfigurasi yang salah pendekatan:

Configuration configuration = new Configuration();
configuration.configure();

ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(
    configuration.getProperties()).build();

SessionFactory sf = configuration.buildSessionFactory(sr);

Dalam Hibernate 5, kaedah ini menyebabkan maklumat tentang pemetaan entiti hilang semasa konfigurasi.buildSessionFactory(sr).

Penyelesaian:

Terdapat dua penyelesaian yang berpotensi untuk isu ini:

1. Fail Konfigurasi Standard (hibernate.cfg.xml dan hibernate.properties):

Untuk fail konfigurasi standard, gunakan pendekatan mudah ini untuk mencipta kilang sesi:

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

2. Memuatkan Sifat daripada Sumber Luaran:

Jika anda mempunyai sifat yang disimpan di lokasi selain daripada hibernate.properties, ikut langkah berikut:

  • Muatkan sifat sebagai sumber :
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);  
  • Muat sifat daripada laluan tertentu dalam sistem fail:
File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);

Adalah penting untuk ambil perhatian bahawa contoh yang disediakan dalam tutorial Hibernate 5 (1.1.6. Startup and helpers) adalah tidak betul dan tidak melakukan konfigurasi yang betul. Kaedah yang betul diberikan di atas.

Dengan melaksanakan penyelesaian ini, pengguna boleh menyepadukan Hibernate 5 dengan MySQL dengan berkesan dan menyelesaikan ralat "Entiti tidak diketahui".

Atas ialah kandungan terperinci Mengapa saya mendapat Ralat \"org.hibernate.MappingException: Entiti tidak diketahui\" dalam Penyepaduan Hibernate 5.0 dengan MySQL?. 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