How to resolve "org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set"?
The error message "org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set" occurs when Hibernate is unable to determine the database dialect. This is typically caused by the absence of the hibernate.dialect property in the Hibernate configuration. Here's how to resolve this issue:
1. Remove Custom Hibernate Configuration:
Ensure that you're not defining any custom Hibernate configuration in your application, as Spring Boot provides auto-configuration for Hibernate. Remove the @Configuration class (HibernateConfig in your example) that defines the sessionFactory() bean, as Spring Boot will create the required beans for you.
2. Add Database Properties:
In your application.properties file, include the following properties to specify your database details and Hibernate configuration:
spring.datasource.url=jdbc:postgresql://localhost:5432/teste?charSet=LATIN1 spring.datasource.username=klebermo spring.datasource.password=123 spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect spring.jpa.show-sql=false spring.jpa.hibernate.ddl-auto=create
3. Remove the commons-dbcp Dependency:
Spring Boot uses the more efficient HikariCP dependency by default. Remove the commons-dbcp dependency from your pom.xml file to allow Spring Boot to manage the database connection pooling.
4. Update Spring Boot Version (Optional):
If you're using an older version of Spring Boot, upgrade to a more recent one to leverage the latest improvements. Spring Boot 2.x supports the SessionFactory bean being an extension of the EntityManagerFactory. You can obtain a SessionFactory by casting the EntityManagerFactory or using the unwrap method.
5. Use @SpringBootApplication:
Instead of using multiple annotations (@Configuration, @EnableAutoConfiguration, and @ComponentScan), you can use a single @SpringBootApplication annotation in more recent versions of Spring Boot. This annotation combines the functionality of all three annotations.
Here is an example of an updated application class:
@SpringBootApplication @ComponentScan("com.spring.app") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
The above is the detailed content of How to Fix \'org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when \'hibernate.dialect\' not set\'?. For more information, please follow other related articles on the PHP Chinese website!