org.mise en veille prolongée.HibernateException: l'Accès à DialectResolutionInfo ne peut pas être null lorsque la " mise en veille prolongée.le dialecte n'est pas définie
Je suis en train d'exécuter un printemps-démarrage de l'application qui utilise hibernate via printemps-jpa, mais j'obtiens cette erreur:
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:104)
at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:205)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842)
at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:152)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:336)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1613)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1550)
... 21 more
mon pom.xml fichier est: est-ce
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.8.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
</dependency>
</dependencies>
mon hibernate est que (le dialecte de configuration est dans la dernière méthode dans cette classe):
@Configuration
@EnableTransactionManagement
@ComponentScan({ "com.spring.app" })
public class HibernateConfig {
@Bean
public LocalSessionFactoryBean sessionFactory() {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(restDataSource());
sessionFactory.setPackagesToScan(new String[] { "com.spring.app.model" });
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource restDataSource() {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("org.postgresql.Driver");
dataSource.setUrl("jdbc:postgresql://localhost:5432/teste?charSet=LATIN1");
dataSource.setUsername("klebermo");
dataSource.setPassword("123");
return dataSource;
}
@Bean
@Autowired
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory);
return txManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
Properties hibernateProperties() {
return new Properties() {
/**
*
*/
private static final long serialVersionUID = 1L;
{
setProperty("hibernate.hbm2ddl.auto", "create");
setProperty("hibernate.show_sql", "false");
setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
}
};
}
}
ce que je fais de mal ici?
OriginalL'auteur Kleber Mota | 2014-10-24
Vous devez vous connecter pour publier un commentaire.
D'abord supprimer l'ensemble de votre configuration de Spring Boot va commencer pour vous. Si vous avez vraiment besoin d'un
SessionFactory
au lieu d'uneEntityManagerFactory
ajouter unHibernateJpaSessionFactoryBean
.Assurez-vous d'avoir un
application.properties
dans votre classpath et ajouter les propriétés suivantes.Si vous avez vraiment besoin d'accéder à un
SessionFactory
et qui est essentiellement la même source de données, puis vous pouvez faire ce qui suit (qui est aussi docmented ici bien que pour XML, pas JavaConfig).De cette façon, vous avez tous les deux un
EntityManagerFactory
et unSessionFactory
.En supposant que vous avez une classe avec un
main
méthode avec@EnableAutoConfiguration
vous n'avez pas besoin de la@EnableTransactionManagement
annotation, comme qui sera activé par Ressort de Démarrage pour vous. Une demande de base de la classe dans lecom.spring.app
paquet devrait être suffisant.Quelque chose comme cela devrait être suffisant pour tous vos classes (y compris les entités et le Printemps des Données en fonction des référentiels) détecté.
Je voudrais également proposer la suppression de la
commons-dbcp
de la dépendance qui permettrait de Printemps de Démarrage pour configurer la plus rapide et la plus robusteHikariCP
mise en œuvre.application.propertes
? Je préfère une voie où je fais tout dans la configuration de la classe HibernateConfig.Pourquoi? Le but du Printemps de Démarrage, c'est qu'il n'configuration automatique pour vous... Si vous préférez comprennent une verbose java configuration de plus de 7 lignes dans un fichier de propriétés?!
Il pourrait même être de 6 lignes dans un fichier de propriétés. Vous n'avez pas besoin de printemps.source de données.driverClassName lorsque vous utilisez Postgres que le Démarrage sera déduire à partir du printemps.source de données.url.
Non, il n'est pas... au Lieu de mettre aléatoire commentaires que vous pourriez d'abord envie de lire la façon dont les propriétés sont chargés en particulier le soutien de Printemps Boot. Les mots de passe sur le disque n'avez pas à être un problème si vous définissez le fichier de droits de la droite. Les mettre dans une base de données n'est pas beaucoup mieux...
Au lieu d'utiliser 3 annotations c'est à dire de Configuration,EnableAutoConfiguration,ComponentScan. Nous pouvons utiliser SpringBootApplication annotation
OriginalL'auteur M. Deinum
J'ai été confronté à un problème similaire lors du démarrage de l'application (à l'aide de Spring Boot) avec le serveur de base de données vers le bas.
Hibernate peut déterminer le dialecte d'utiliser automatiquement, mais pour ce faire, il a besoin d'une connexion en direct à la base de données.
Si la base de données que vous essayez de vous connecter n'existe, vous pouvez également voir cette erreur.
Eu le même problème, dans mon cas, la DB a été jusqu'mais les informations d'identification ont été mauvais. +1
étonnamment, j'ai commencé à avoir ce problème lorsqu'il a chuté de schéma attend hbm2ddl.auto=true permettra de créer de la db et des tables. cependant, il a échoué. mais wen j'ai créé schéma vide hbm2ddl travaillé à la création de tables
.... ou le réseau wifi de l'arrêt :p
OriginalL'auteur mhnagaoka
J'ai eu cette erreur lors de ma base de données n'a pas été créé. Après la création de la DB manuellement, il a bien fonctionné.
comment / où puis-je spécifier "printemps.jpa.mise en veille prolongée.ddl-auto=créer"?
Andrei veut dire que vous pouvez le mettre en application.propriétés si c'est le Printemps de Démarrage. Il doit y avoir l'équivalent pour xml configuration Spring.
Cette erreur apparaît uniquement lorsque la base de données n'existe pas ou également lorsque les tables dans la base de données ne sont pas présents?
J'avais donné un mauvais mot de passe et j'ai été confronté à la même erreur. Merci ACV, vous m'a beaucoup aidé.
OriginalL'auteur ACV
J'ai aussi étaient confrontés au même problème. Mais, c'était dû à la non valide mot de passe fourni. Aussi, je voudrais dire que votre code semble être vieux style de code à l'aide de printemps. Vous l'avez déjà mentionné que vous êtes à l'aide de printemps de démarrage, ce qui signifie que la plupart des choses sera automatiquement configuré pour vous. hibernate dialecte sera automatiquement sélectionné en fonction du pilote de base de données disponible dans le classpath avec des informations d'identification valides qui peuvent être utilisés pour tester la connexion correctement. Il il y a un problème avec la connexion, vous aurez à nouveau le visage de la même erreur. seulement 3 propriétés nécessaires dans l'application.propriétés
OriginalL'auteur Pankaj
ajouter
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
dans l'application.fichier de propriétésOriginalL'auteur alpine
J'ai rencontré le même problème et mon problème a été que la DB j'ai essayé de vous connecter à n'existait pas.
J'ai créé une base de données vérifiée à l'URL/chaîne de connexion et rediffusé et tout a fonctionné comme prévu.
OriginalL'auteur Eric B.
ce qui se passe parce que votre code n'est pas de la balle pour se connecter à la base de données. Assurez-vous d'avoir du driver mysql, et le nom d'utilisateur, le mot de passe correct.
OriginalL'auteur user7169604
Assurez-vous que votre
application.properties
a toutes les bonnes info: (j'ai changé ma db port de8889
à3306
il a travaillé)OriginalL'auteur Vikram S
Dans mon cas, l'utilisateur n'a pas pu se connecter à la base de données. Si a le même problème si le journal contient un avertissement juste avant de l'exception:
OriginalL'auteur zbig
Assurez-vous que vous avez votre base de données dans votre pom comme l'OP n'. C'était mon problème.
J'ai juste besoin d'ajouter la base de la dépendance.
OriginalL'auteur obesechicken13
Mon problème était que la base de données intégrée est déjà connecté. fermeture de la connexion
OriginalL'auteur doesnt_matter
Au printemps de démarrage pour jpa java config vous avez besoin d'étendre JpaBaseConfiguration et le mettre en œuvre de méthodes abstraites.
OriginalL'auteur Yaroslav
J'ai eu ce problème lors de l'Éclipse n'a pas pu trouver le pilote JDBC. Avait à faire une gradle actualisation de l'éclipse d'obtenir ce travail.
OriginalL'auteur Kannan Ramamoorthy
J'ai aussi eu ce problème. Dans mon cas, c'était à cause de pas de subventions ont été attribués à l'utilisateur MySQL. Attribution de subventions à l'utilisateur MySQL qui mon application utilise résolu le problème:
OriginalL'auteur Yamashiro Rion
J'ai eu le même problème et il a été causé par le fait d'être incapable de se connecter à l'instance de base de données. Recherchez hibernate erreur HHH000342 dans le journal ci-dessus que l'erreur, il devrait vous donner une idée de où la db connexion est défaillante (nom d'utilisateur incorrect/passe, url, etc.)
OriginalL'auteur Farouk
Si vous utilisez cette ligne:
assurez-vous que
env.getProperty("hibernate.dialect")
n'est pas null.OriginalL'auteur zygimantus
Ce qui m'est arrivé parce que je n'avais pas ajouté les
conf.configure();
avant le début de la session:OriginalL'auteur diana
Assurez-vous que vous avez entrée valide détail dans application.propriétés et si votre serveur de base de données est disponible. Comme un exemple, lorsque vous vous connectez avec MySQL vérifier si XAMPP fonctionne correctement.
OriginalL'auteur Lahiru Gamage
J'ai fait face à la même question: La db j'ai essayé de connecter n'existe pas. J'ai utilisé
jpa.database=default
(qui je suppose signifie qu'il va essayer de se connecter à la base de données et la sélection automatique de la langue). Une fois que j'ai commencé à la base de données, il a bien fonctionné sans aucun changement.OriginalL'auteur Avishekh Tewari
Résolu avec des propriétés dans mon
META-INF/persistence.xml
OriginalL'auteur Alejandro Teixeira Muñoz
Pour ceux qui travaillent avec AWS MySQL RDS, il peut se produire lorsque vous êtes incapable de se connecter à la base de données. Aller à des Groupes de Sécurité AWS réglage RDS pour MySQL et modifier l'IP entrantes règle par rafraîchissante MyIP.
J'ai été confronté à ce problème et de faire ci-dessus ai résolu le problème pour moi.
OriginalL'auteur Ajitesh
J'ai été confronté à ce problème, en raison de Mysql 8.0.11 version retour à 5,7 résolu pour moi
OriginalL'auteur Gautam Yadav
J'ai eu le même message d'erreur après l'utilisation de hibernate génération de code
https://www.mkyong.com/hibernate/how-to-generate-code-with-hibernate-tools/
puis le
hibernate.cfg.xml
a été créé en/src/main/java
mais sans les paramètres de connexion
après le retirer, mon problème a été résolu
OriginalL'auteur RMagen
Si l'erreur ci-dessus dans le journal était ceci: "ERREUR - HikariPool-1 - jdbcUrl est nécessaire avec driverClassName"
alors la solution est à réécrire "url" pour "jdbc-url", selon ce:
Application de base de données.yml pour le Printemps de démarrage à partir d'applications.propriétés
OriginalL'auteur JanBrus