Java Hibernate MySql "Невозможно установить соединение JDBC" - PullRequest
0 голосов
/ 01 декабря 2018

В течение долгого времени я пытаюсь соединить hibernate и mysql.

Это не проблема с базой данных или Intellij, потому что я могу без проблем добавить db в качестве источника данных и создать | отбрасывать таблицы или вставлять значения вчерез терминал Intellij sql после установления соединения.
Но после использования SessionFactory я получаю сообщение об ошибке "Невозможно установить соединение JDBC".

Использование DriverManager.getConnection работает, но не использует спящий режим, и мне придется написатьзапросов, и я бы избежал этого.

Я использую Hibernate 5.3.7

Редактировать: исправлена ​​кавычка в URL, но это не помогло

Edit2: Так что ясделал некоторые копания (отладки), и я обнаружил, что ошибка возникает в строке «DriverManagerConnectionProviderImpl.java» в строке, которая говорит «connections.add (connectionCreator.createConnection ()». Это реализация класса BasicConnectionCreator, поле которого

final Connection conn = makeConnection( url, connectionProps );

который всегда равен нулю и выдает исключение, но когда я отлаживаю это, параметры в порядке.

Edit3: я пытался использовать предыдущую версиюHibernate, MySql Server и Sql Connector / J.Мне просто интересно, насколько банальной является ошибка, которую я совершаю.

hibernate.cfg.xml:

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

    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hospital</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">pwd</property>
    <property name="hibernate.connection.pool_size">10</property>
    <property name="hibernate.hbm2ddl.auto">update</property>
    <property name="show_sql">true</property>

    <!-- DB schema will be updated if needed -->
</session-factory>

HibernateUtil.java

package com.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class HibernateUtil {

  private static SessionFactory sessionFactory = buildSessionFactory();

  private static SessionFactory buildSessionFactory() {
    try {
        // Create the SessionFactory from hibernate.cfg.xml
        return new Configuration().configure().buildSessionFactory();
    } catch (Throwable ex) {
        // Make sure you log the exception, as it might be swallowed
        System.err.println("\n\nInitial SessionFactory creation failed." + ex);             
        throw new ExceptionInInitializerError(ex);
    }
  }

  public static SessionFactory getSessionFactory() {
    if (sessionFactory == null) {
        // loads configuration and mappings
        Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
        ServiceRegistry serviceRegistry
                = new StandardServiceRegistryBuilder()
                .applySettings(configuration.getProperties()).build();

        // builds a session factory from the service registry
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);

    }
    return sessionFactory;
  }

  public static void shutdown() {
    // Close caches and connection pools
    getSessionFactory().close();
  }

}

Код ошибки:

** Exception in SessionFactory **
org.hibernate.HibernateException: Unable to make JDBC Connection [jdbc:mysql://localhost:3306/hospital]
at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:77)
at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:106)
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.engine.jdbc.internal.JdbcServicesImpl.buildJdbcConnectionAccess(JdbcServicesImpl.java:260)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:94)
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:1887)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845)
at com.util.HibernateUtil.configureSessionFactory(HibernateUtil.java:29)
at com.util.HibernateUtil.<clinit>(HibernateUtil.java:40)
at com.Main.main(Main.java:95)
Exception in thread "main" java.lang.NullPointerException
at com.Main.main(Main.java:96)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...