Как установить свойства конфигурации Hibernate для подключения к Mysql с помощью драйвера Fabric

Я пытаюсь заставить работать некоторый старый код, который создает некоторые таблицы для конфигурации гибернации в базе данных Mysql, но код ссылается на конфигурацию источника данных, которой у меня больше нет, и я просто хочу запустить ее как автономную Java (не в Tomcat) контейнер), поэтому я сделал некоторые изменения в конфигурации Hibernate.

Мой пом теперь включает

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.35</version>
    </dependency>

Мой код

  public static  Configuration setupDatabase()
{
    Configuration cfg = new Configuration()
            .setProperty(Environment.URL,"jdbc:mysql:songkong")
            .setProperty(Environment.DRIVER,"com.mysql.fabric.jdbc.FabricMySQLDriver")
            .setProperty(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect")
            .setProperty("hibernate.show_sql", "true")
            .setProperty("hibernate.connection.username","dbuser")
            .setProperty("hibernate.connection.username", "dbpassword");;
    addEntitiesToConfig(cfg);
    cfg.setProperty(Environment.HBM2DDL_AUTO, "create-drop");
    return cfg;
}

public static void main(String[] args)
{
    Configuration cfg = setupDatabase();
    new SchemaExport(cfg).create(false,true);
}

В настоящее время проблема заключается в том, что он не может найти драйвер.

java.sql.SQLException: No suitable driver found for jdbc:mysql:songkong
        at java.sql.DriverManager.getConnection(DriverManager.java:602)
        at java.sql.DriverManager.getConnection(DriverManager.java:154)
        at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:173)
        at org.hibernate.tool.hbm2ddl.ManagedProviderConnectionHelper.prepare(ManagedProviderConnectionHelper.java:55)
        at org.hibernate.tool.hbm2ddl.DatabaseExporter.<init>(DatabaseExporter.java:52)
        at org.hibernate.tool.hbm2ddl.SchemaExport.execute(SchemaExport.java:368)
        at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:305)
        at org.hibernate.tool.hbm2ddl.SchemaExport.create(SchemaExport.java:294)
        at com.jthink.songkong.appserverdb.util.Db.main(Db.java:143)

Драйвер Fabric находится в банке, но я не уверен, должен ли я использовать этот драйвер и правильно ли указана строка Environment.DRIVER, чтобы ссылаться на него. Я не думаю, что использовал этот драйвер раньше (пару лет назад), но он был единственным, который я мог найти в Maven Central.

(Моя база данных называется songkong, и я могу исправить ее из командной строки, я не показываю реальное имя пользователя и пароль в фрагменте кода)

1 ответ

Решение

Просто заметил, что в jar был также драйвер non-fabric, установив ENVIRONMENT.DRIVER к этому, и некоторые модификации Environment.URL это исправили.

 Configuration cfg = new Configuration()
                .setProperty(Environment.URL,"jdbc:mysql://localhost/songkong")
                .setProperty(Environment.DRIVER,"com.mysql.jdbc.Driver")
                .setProperty(Environment.DIALECT, "org.hibernate.dialect.MySQL5Dialect")
                .setProperty("hibernate.show_sql", "true")
                .setProperty("hibernate.connection.username","dbuser")
                .setProperty("hibernate.connection.password", "dbpassword");;
Другие вопросы по тегам