2013-04-13 164 views
0

我知道我的情況不單一,在我搜索之前,但仍然認爲我有個人問題。無法打開Hibernate Session進行事務處理;嵌套的異常是org.hibernate.exception.GenericJDBCException

2013-04-13 12:15:04,980 INFO [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - <Loading XML bean definitions from class path resource [app-context.xml]> 
2013-04-13 12:15:05,312 INFO [org.springframework.context.support.GenericXmlApplicationContext] - <Refreshing o[email protected]8def5d: startup date [Sat Apr 13 12:15:05 EDT 2013]; root of context hierarchy> 
2013-04-13 12:15:05,405 INFO [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer] - <Loading properties file from class path resource [connection.properties]> 
2013-04-13 12:15:05,438 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] - <Pre-instantiating singletons in org.s[email protected]c816a9: defining beans [dataSource,transactionManager,org.springframework.beans.factory.config.PropertyPlaceholderConfigurer#0,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,contactDao,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,sessionFactory]; root of factory hierarchy> 
2013-04-13 12:15:05,452 INFO [org.springframework.jdbc.datasource.DriverManagerDataSource] - <Loaded JDBC driver: com.mysql.jdbc.Driver> 
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
2013-04-13 12:15:05,882 INFO [org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean] - <Building new Hibernate SessionFactory> 
2013-04-13 12:15:06,318 INFO [org.springframework.orm.hibernate3.HibernateTransactionManager] - <Using DataSource [[email protected]99d] of Hibernate SessionFactory for HibernateTransactionManager> 
Exception in thread "main" org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Cannot open connection 
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:596) 
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:371) 
    at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335) 
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105) 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) 
    at $Proxy20.findAll(Unknown Source) 
    at rus.spring.hibernate.AppOut.main(AppOut.java:18) 
Caused by: org.hibernate.exception.GenericJDBCException: Cannot open connection 
    at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) 
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) 
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 
    at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) 
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449) 
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) 
    at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160) 
    at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81) 
    at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473) 
    at org.springframework.orm.hibernate3.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:555) 
    ... 7 more 
Caused by: java.sql.SQLException: Access denied for user 'root '@'localhost' (using password: YES) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:925) 
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4615) 
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1302) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2483) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2516) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2301) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:317) 
    at java.sql.DriverManager.getConnection(DriverManager.java:579) 
    at java.sql.DriverManager.getConnection(DriverManager.java:190) 
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:173) 
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriver(DriverManagerDataSource.java:164) 
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149) 
    at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119) 
    at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81) 
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) 
    ... 12 more 

所以,我的應用程序,其中的context.xml我做的配置Hibernate的Session anatation等

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName"><value>${jdbc.driverClassName}</value></property> 
    <property name="url"><value>${jdbc.connectionValues}</value></property> 
    <property name="username"><value>${jdbc.userName}</value></property> 
    <property name="password"><value>${jdbc.password}</value></property> 
    </bean> 


    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref ="sessionFactory"/> 
    </bean> 

    <context:property-placeholder location="connection.properties"/> 

    <tx:annotation-driven transaction-manager="transactionManager"/> 

    <context:component-scan base-package="rus.spring.hibernate" /> 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
    <property name="dataSource" ref ="dataSource"/> 
    <property name="packagesToScan" value="rus.spring.hibernate"/> 
    <property name="hibernateProperties"> 
    <props> 
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> 
    <prop key="hibernate.max_fetch_depth">3</prop> 
    <prop key="hibernate.jdbc.fetch_size">50</prop> 
    <prop key="hibernate.jdbc.batch_size">10</prop> 
    <prop key="hibernate.show_sql">true</prop> 
    </props> 
    </property> 

    </bean> 

</beans> 

我的屬性文件是:

jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.connectionValues=jdbc:mysql://localhost:3306/hibernateDB 
jdbc.userName=root 
jdbc.password=25051988 

我剛剛提到這條線: 訪問拒絕用戶'root'@'localhost'(使用密碼:YES),但是我的所有connection.properties都是絕對正確的。

謝謝你的幫助。

回答

5

請注意,錯誤消息表示Access denied for user 'root '@'localhost'。您的屬性文件中有root之後有兩個額外的空格。

相關問題