Rumah > pangkalan data > tutorial mysql > Ralat 'Entiti Tidak Diketahui' Hibernate 5: Cara Mengkonfigurasi SessionFactory dengan Betul untuk Pemetaan Entiti?

Ralat 'Entiti Tidak Diketahui' Hibernate 5: Cara Mengkonfigurasi SessionFactory dengan Betul untuk Pemetaan Entiti?

Linda Hamilton
Lepaskan: 2024-12-15 03:45:23
asal
439 orang telah melayarinya

Hibernate 5

Hibernate 5: Menyelesaikan Ralat "Entiti Tidak Diketahui" Semasa Penyepaduan

Semasa cuba untuk mengintegrasikan Hibernate 5.0 dengan MySQL, banyak pembangun menghadapi mesej ralat "org.hibernate.MappingException: Entiti tidak diketahui." Isu ini timbul secara khusus dengan versi Hibernate 5.0.0 dan 5.0.1, manakala versi sebelumnya seperti 4.3.9 berfungsi dengan betul.

Definisi Masalah

Entiti "Tidak diketahui " ralat berlaku apabila Hibernate tidak dapat mengenali kelas yang dianotasi sebagai entiti. Ini boleh berlaku jika metadata pemetaan untuk kelas tidak dikonfigurasikan dengan betul atau ditambahkan pada konfigurasi Hibernate.

Butiran Konfigurasi

Kebergantungan Maven dan hibernate.cfg yang disediakan. konfigurasi xml nampaknya betul. Kelas Pengguna juga diberi anotasi sebagai entiti dan telah dipetakan ke jadual pangkalan data "User_table."

Punca dan Penyelesaian

Punca isu ini terletak pada proses mencipta SessionFactory dalam kelas HibernateMain. Dalam Hibernate 5, kod berikut digunakan untuk mengkonfigurasi dan membina SessionFactory:

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

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

SessionFactory sf = configuration.buildSessionFactory(sr);
Salin selepas log masuk

Masalah timbul kerana menggunakan configuration.buildSessionFactory(sr) dalam Hibernate 5 menyebabkan konfigurasi kehilangan maklumat pemetaan yang diperoleh dengan memanggil configuration.configure(). Akibatnya, Hibernate tidak dapat mengenali kelas Pengguna sebagai entiti beranotasi.

Penyelesaian

Untuk menyelesaikan isu ini, terdapat dua pendekatan:

Menggunakan Fail Konfigurasi Standard (hibernate.cfg.xml dan hibernate.properties)

Jika anda menggunakan fail konfigurasi standard, anda boleh mencipta SessionFactory tanpa menggunakan ServiceRegistry.

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Salin selepas log masuk

Memuatkan Sifat

Jika anda mempunyai sifat dalam fail berasingan, anda boleh memuatkannya dan membina SessionFactory menggunakan StandardServiceRegistryBuilder.

Memuatkan Sifat sebagai Sumber

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
Salin selepas log masuk

Memuatkan Sifat dari Laluan

File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
Salin selepas log masuk

Tambahan Nota

  • Tutorial contoh dalam dokumentasi Hibernate 5 (1.1.6 Startup dan helpers) memberikan contoh yang salah yang tidak melaksanakan konfigurasi yang betul.
  • Menggunakan kod yang salah boleh membawa kepada ralat "Entiti tidak diketahui".

Atas ialah kandungan terperinci Ralat 'Entiti Tidak Diketahui' Hibernate 5: Cara Mengkonfigurasi SessionFactory dengan Betul untuk Pemetaan Entiti?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan