web-dev-qa-db-fra.com

Impossible de créer le service demandé [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

J'essaie de configurer l'outil de cartographie hibernate orm sur ma classe Java et d'utiliser PostgreSQL comme base de données et de configurer le mot de passe comme "mot de passe". Lorsque j'ai essayé d'exécuter l'application, j'ai rencontré une erreur sur les journaux de la console sous le nom Impossible de créer le service demandé [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] . J'ai essayé cela sur l'ancienne version de Hibernate et cela a fonctionné. La version en veille prolongée que j'utilise actuellement est la version 5.1.0. 

Voici le journal des erreurs:

Mar 31, 2016 3:55:09 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.1.0.Final}
Mar 31, 2016 3:55:09 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Mar 31, 2016 3:55:09 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Mar 31, 2016 3:55:09 PM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity
WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-configuration. Use namespace http://www.hibernate.org/dtd/hibernate-configuration instead.  Support for obsolete DTD/XSD namespaces may be removed at any time.
Mar 31, 2016 3:55:10 PM org.hibernate.annotations.common.reflection.Java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Mar 31, 2016 3:55:10 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
Mar 31, 2016 3:55:10 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [org.postgresql.Driver] at URL [jdbc:postgresql://localhost:5432/hibernatedb]
Mar 31, 2016 3:55:10 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=sa, password=****}
Mar 31, 2016 3:55:10 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
Mar 31, 2016 3:55:10 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 1 (min=1)
Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.Java:244)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:208)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:189)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.Java:51)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.Java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:217)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:189)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.Java:352)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.Java:111)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.Java:83)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.Java:418)
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.Java:87)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.Java:692)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.Java:724)
    at org.javabrains.hibernate.HibernateTest.main(HibernateTest.Java:18)
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect
    at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator$1$1.convert(BasicConnectionCreator.Java:105)
    at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.Java:123)
    at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.Java:41)
    at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.Java:58)
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections.addConnections(PooledConnections.Java:106)
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.Java:40)
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections.<init>(PooledConnections.Java:19)
    at org.hibernate.engine.jdbc.connections.internal.PooledConnections$Builder.build(PooledConnections.Java:138)
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.Java:110)
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.Java:74)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.Java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.Java:217)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.Java:189)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.Java:145)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.Java:66)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.Java:35)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.Java:88)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.Java:234)
    ... 14 more
Caused by: org.postgresql.util.PSQLException: FATAL: password authentication failed for user "sa"
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.Java:433)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.Java:208)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.Java:66)
    at org.postgresql.jdbc.PgConnection.<init>(PgConnection.Java:215)
    at org.postgresql.Driver.makeConnection(Driver.Java:406)
    at org.postgresql.Driver.connect(Driver.Java:274)
    at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.Java:38)
    ... 29 more

Voici mon fichier hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">


<hibernate-configuration>
  <session-factory>
    <!-- Database connection settings -->
    <property name="connection.driver_class">org.postgresql.Driver</property>
    <property name="connection.url">jdbc:postgresql://localhost:5432/hibernatedb</property>
    <property name="connection.username">sa</property>
    <property name="connection.password">password</property>

    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">1</property>

    <!-- SQL dialect -->
    <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>

    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>

    <!-- Disable the second-level cache  -->
    <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>

    <!-- Echo all executed SQL to stdout -->
    <property name="show_sql">true</property>

    <!-- Drop and re-create the database schema on startup -->
    <property name="hbm2ddl.auto">create</property>

    <!-- Names the annotated entity class-->
    <mapping class="org.javabrains.dto.UserDetails"/>

  </session-factory>
</hibernate-configuration>

Mon cours de POJO

package org.javabrains.dto;

import javax.persistence.Entity;

@Entity
public class UserDetails {

    private int userId;
    private String userName;

    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }

}

Et ma classe d'application:

package org.javabrains.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.javabrains.dto.UserDetails;

public class HibernateTest {

    public static void main(String[] args) {
        UserDetails user = new UserDetails();

        user.setUserId(1);
        user.setUserName("Tet");

        //Hibernate API to save this objects to DB
        //Session factory is created only ONCE
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();

        //create transaction
        session.beginTransaction();
        session.save(user);

        //end the transaction
        session.getTransaction().commit();

        //Closing the session
        session.close();


    }

}

Ce qui suit est l'image de la structure d'hibernation Java

enter image description here

23
tdel

Cause: L'erreur s'est produite car hibernate n'est pas en mesure de se connecter à la base de données.
Solution:
1. Assurez-vous de disposer d’une base de données sur le serveur référencé dans le fichier de configuration, par exemple. "hibernatedb" dans ce cas.
2. S'il vous plaît voir si le nom d'utilisateur et mot de passe pour se connecter à la base de données sont corrects.
3. Vérifiez si les fichiers JAR requis pour la connexion sont mappés au projet.

9
Vaibhav Bhalla

Vous n'avez pas besoin de hibernate-entitymanager-xxx.jar, car vous utilisez une approche de session Hibernate (pas JPA). Vous devez également fermer la SessionFactory et annuler une transaction sur des erreurs. Mais, le problème, bien sûr, n'est pas avec ceux-là.

Ceci est retourné par une base de données

#
org.postgresql.util.PSQLException: FATAL: password authentication failed for user "sa"
#

On dirait que vous avez fourni un nom d'utilisateur ou un mot de passe incorrect. 

8
v.ladynev

J'ai eu cette erreur avec MySQL comme base de données et la seule solution consistait à réinstaller tous les composants de MySQL, car auparavant je n'avais installé que le serveur.

Essayez donc de télécharger d’autres versions de PostgreSQL et d’obtenir tous les composants.

0
Gabriel Leite

vous devez arrêter une autre application en cours d'exécution associée à la table de base de données especial ... Comme l'exécution de l'API Java dans un autre module ou qu'un autre projet n'est pas arrêté .. alors arrêtez-vous en cours d'exécution.

0
Abolfazl Ghahremani

Vous avez rencontré un problème de connexion à la base de données ou vous avez manqué l’une des configurations de veille prolongée pour vous connecter à une base de données telle que la base de données DIALECT.

Cela m'est arrivé parce que mon serveur de base de données était déconnecté en raison d'un problème de réseau alors que je pensais être connecté.

Si vous utilisez Spring Boot avec Hibernate connecté à Oracle Db, utilisez

hibernate.dialect=org.hibernate.dialect.HSQLDialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=update
hibernate.generate_statistics=true
entitymanager.packagesToScan: com
0
Yergalem

J'utilise Eclipse Mars, Hibernate 5.2.1, Jdk7 et Oracle 11g.

Je reçois la même erreur lorsque je lance l'outil de génération de code Hibernate. Je suppose que c'est un problème de version car je l'ai résolu en choisissant la version d'Hibernate (5.1 à 5.0) dans le cadre de type de ma configuration de console Hibernate.

0
orog

Vous oubliez le @ID au-dessus de l'ID utilisateur

0
Luis Jose Marrero