2016-06-11 1 views
0

Я получаю исключение при создании первого приложения в спящем режиме. Я искал, но предоставленные решения мне не помогли. Что странно я делаю здесь, из-за которого я сжег свои часы на этом.Исключение при попытке создать соединение MySQL с Hibernate

См. Содержание ниже, чтобы лучше указать проблему. Project Structure with all libraries being used

Student.java

package beans; 

public class Student { 
    private int studentId; 
    private String name; 
    private int marks; 
    public int getStudentId() { 
     return studentId; 
    } 
    public void setStudentId(int studentId) { 
     this.studentId = studentId; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public int getMarks() { 
     return marks; 
    } 
    public void setMarks(int marks) { 
     this.marks = marks; 
    } 


} 

hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
    <session-factory> 
     <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="connection.url">jdbc:mysql://localhost:3306/school</property> 
     <property name="connection.username">root</property> 
     <property name="connection.password">root</property> 

     <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 
     <property name="hbm2dll.auto">create</property> 
     <property name="show_sql">true</property> 

     <mapping resource="resources/Student.hbm.xml" /> 
    </session-factory> 
</hibernate-configuration> 

Student.hbm.xml

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
    <class name="beans.Student" table="student" schema="school"> 
     <id name="studentId"/> 
     <property name="name"/> 
     <property name="marks"/> 
    </class> 
</hibernate-mapping> 

Test.java

package test; 

import org.hibernate.cfg.Configuration; 

public class Test { 
    public static void main(String[] args) { 
     Configuration conf = new Configuration(); 
     conf.addResource("resources/hibernate.cfg.xml").buildSessionFactory(); 
    } 
} 

Да, я проверил, что есть имя пользователя и пароль, как корень, и я также создал БД с именем школы и порт 3306.

Исключение:

WARN: HHH000342: Could not obtain connection to query metadata : The application must supply JDBC connections 
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:691) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:723) 
    at test.Test.main(Test.java:8) 
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:100) 
    at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137) 
    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 
+0

Не могли бы вы, возможно, разделить исключение с нами? –

+0

Я только что разделил исключение. Пожалуйста, предложите. Спасибо @PerHuss –

ответ

1

Вы не называли configure метод

Configuration conf = new Configuration().configure(); 

добавить это будет работать.

также из спящего режима 4, вы можете инициализировать ServiceRegistry, смотрите документацию по

+0

Спасибо, это решило мою проблему. –

1

Tricky один! Кажется, что виновником является настройка вашей фабрики сеансов. addResource() предназначен для загрузки сопоставлений, но молча игнорирует все остальные настройки. Попробуйте это вместо:

conf.configure(new File("resources/hibernate.cfg.xml")) 
    .buildSessionFactory(); 

Удачи вам в вашем проекте!