org.hibernate.HibernateException : l'accès à DialectResolutionInfo ne peut pas être nul lorsque 'hibernate.dialect' n'est pas défini
Lors de la tentative d'exécution d'une application Spring-Boot qui utilise Hibernate via Spring-JPA, vous pouvez rencontrer l'erreur suivante :
org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
Copier après la connexion
Cette erreur indique que le Le dialecte Hibernate n'a pas été correctement configuré. Le dialecte est responsable de la traduction des commandes SQL spécifiques à la base de données.
Solution
Pour résoudre cette erreur, suivez ces étapes :
-
Configurer les propriétés Hibernate : Dans votre fichier application.properties ou hibernate.cfg.xml, définissez la propriété hibernate.dialect sur le dialecte approprié pour votre base de données. Par exemple, si vous utilisez PostgreSQL, définissez-le sur org.hibernate.dialect.PostgreSQLDialect.
-
Utiliser la configuration automatique de Spring Boot : Par défaut, Spring Boot configurera automatiquement Hibernate en fonction de les paramètres dans votre fichier application.properties. Assurez-vous d'avoir la dépendance spring-boot-starter-data-jpa dans votre projet et que vous utilisez Spring Boot versions 1.4 ou ultérieures.
Si vous avez besoin d'accéder directement à SessionFactory, vous pouvez utilisez l'extrait de code suivant :
@Bean
public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
factory.setEntityManagerFactory(emf);
return factory;
}
Copier après la connexion
Alternativement, vous pouvez obtenir une SessionFactory en y castant EntityManagerFactory, à partir d'Hibernate 5.
Conseils supplémentaires
- Supprimez la dépendance commons-dbcp car Spring Boot utilise l'implémentation plus efficace de HikariCP.
- Utilisez plutôt l'annotation @SpringBootApplication de @Configuration, @EnableAutoConfiguration et @ComponentScan lors du récent Spring Boot versions.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!