Rumah > Java > javaTutorial > Mengapa Aplikasi Hibernate But Spring Saya Membuang \'org.hibernate.HibernateException: Akses kepada DialectResolutionInfo tidak boleh batal apabila \'hibernate.dialect\' tidak ditetapkan\'?

Mengapa Aplikasi Hibernate But Spring Saya Membuang \'org.hibernate.HibernateException: Akses kepada DialectResolutionInfo tidak boleh batal apabila \'hibernate.dialect\' tidak ditetapkan\'?

Susan Sarandon
Lepaskan: 2024-11-28 20:39:17
asal
504 orang telah melayarinya

Why Does My Spring Boot Hibernate Application Throw

org.hibernate.HibernateException: Akses kepada DialectResolutionInfo tidak boleh batal apabila 'hibernate.dialect' tidak ditetapkan

Apabila cuba menjalankan aplikasi Spring-Boot yang menggunakan Hibernate melalui Spring-JPA, anda mungkin menghadapi perkara berikut ralat:

org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
Salin selepas log masuk

Ralat ini menunjukkan bahawa dialek Hibernate tidak dikonfigurasikan dengan betul. Dialek bertanggungjawab untuk menterjemah perintah SQL khusus pangkalan data.

Penyelesaian

Untuk menyelesaikan ralat ini, ikut langkah berikut:

  1. Konfigurasikan Sifat Hibernate: Dalam fail application.properties atau hibernate.cfg.xml anda, tetapkan sifat hibernate.dialect kepada dialek yang sesuai untuk pangkalan data anda. Contohnya, jika anda menggunakan PostgreSQL, tetapkannya kepada org.hibernate.dialect.PostgreSQLDialect.
  2. Gunakan Konfigurasi Auto But Spring: Secara lalai, Spring Boot akan mengkonfigurasi Hibernate secara automatik berdasarkan tetapan dalam fail application.properties anda. Pastikan anda mempunyai kebergantungan spring-boot-starter-data-jpa dalam projek anda dan anda menggunakan Spring Boot versi 1.4 atau lebih baru.

Jika anda perlu mengakses SessionFactory secara langsung, anda boleh gunakan coretan kod berikut:

@Bean
public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
    HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
    factory.setEntityManagerFactory(emf);
    return factory;
}
Salin selepas log masuk

Sebagai alternatif, anda boleh mendapatkan SessionFactory dengan menghantar EntityManagerFactory kepadanya, mulai Hibernate 5.

Petua Tambahan

  • Alih keluar pergantungan commons-dbcp kerana Spring Boot menggunakan pelaksanaan HikariCP yang lebih cekap.
  • Gunakan @SpringBootApplication anotasi dan bukannya @Configuration, @EnableAutoConfiguration dan @ComponentScan dalam versi Spring Boot terbaharu.

Atas ialah kandungan terperinci Mengapa Aplikasi Hibernate But Spring Saya Membuang \'org.hibernate.HibernateException: Akses kepada DialectResolutionInfo tidak boleh batal apabila \'hibernate.dialect\' tidak ditetapkan\'?. 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