spring整合hibernate ,测试遇到问题,各位请支招

如此努力你也未必 2015-12-22 05:40:01
1.先上 错误信息
Exception in thread "main" org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:47)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:95)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:90)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:112)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.connection(StatementPreparerImpl.java:47)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:146)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:172)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:148)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1928)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1897)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1875)
at org.hibernate.loader.Loader.doQuery(Loader.java:919)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:336)
at org.hibernate.loader.Loader.doList(Loader.java:2611)
at org.hibernate.loader.Loader.doList(Loader.java:2594)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2423)
at org.hibernate.loader.Loader.list(Loader.java:2418)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:501)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:371)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1326)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87)
at learning2.Test1.demo2(Test1.java:40)
at learning2.Test1.main(Test1.java:16)
Caused by: java.sql.SQLException: Access denied for user 'sa'@'localhost' (using password: NO)
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.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1704)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1250)
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(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
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 com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.ensureFirstConnectionAcquisition(C3P0PooledConnectionPoolManager.java:971)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooledConnectionPool(C3P0PooledConnectionPoolManager.java:858)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:331)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:323)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:146)
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:386)
at org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:87)
... 21 more
2.上测试代码:
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test1 {

public static void main(String[] args) {

demo2();
}

public static void demo2(){
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
SessionFactory sf=(SessionFactory) context.getBean("sessionFactory");
Session s=sf.openSession();
System.out.println(s.hashCode());
Query query=(Query) s.createQuery("from TestEntity");
System.out.println(query.list());
}

}
3.上applicationContext.xml配置信息(只显示主要的)

<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- SPRING 扫描配置 -->
<context:component-scan base-package="opt.mvc">
</context:component-scan>

<!-- 配置c3p0数据库连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClass}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</bean>


<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>opt/mvc/entity/TestEntity.hbm.xml</value>
</list>
</property>
</bean>

4.上jdbc.properties配置信息(注:此账户密码 是没问题的可以登录到MySQL中
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/learning?characterEncoding=utf-8
jdbc.user=demo
jdbc.password=demo
5.项目结构、 实体以及映射文件 就不上了 200% 没有问题!

实在是不清楚 这个sa 用户 是从哪冒出来的!
...全文
2045 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
王熙中 2016-11-09
  • 打赏
  • 举报
回复
楼主我也出现了这个问题,有没有什么好的解决方案?
王有天 2016-01-06
  • 打赏
  • 举报
回复
  <property name="maxPoolSize">15</property> <property name="maxStatements">100</property> 在池里面加,我吃饭店了。还是不行可以回复。我估摸着如果这样都不可以。可能是版本DRIVER不匹配
小白晒太阳 2016-01-06
  • 打赏
  • 举报
回复
引用 6 楼 u011106893 的回复:
[quote=引用 4 楼 Tro_picana 的回复:] <!-- 配置c3p0数据库连接池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driverClass}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> </bean> 改成不读配置文件试试,把值   <property name="driverClass"><value>com.mysql.jdbc.Driver</value></property>   <property name="jdbcUrl"><value>jdbc:mysql://127.0.0.1:3306/learning?characterEncoding=utf-8</value></property>   <property name="user"><value>demo</value></property>   <property name="password"><value>demo</value></property>
不行的 还是这个错误: Access denied for user 'sa'@'localhost' (using password: NO) Exception in thread "main" org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection 不清楚 这个SA 用户是从哪里冒出来的,再说我有自己的账号密码 at o[/quote]好吧,确实很奇怪,一般sa是sqlServer的默认用户名。。
  • 打赏
  • 举报
回复
引用 4 楼 Tro_picana 的回复:
<!-- 配置c3p0数据库连接池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driverClass}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> </bean> 改成不读配置文件试试,把值   <property name="driverClass"><value>com.mysql.jdbc.Driver</value></property>   <property name="jdbcUrl"><value>jdbc:mysql://127.0.0.1:3306/learning?characterEncoding=utf-8</value></property>   <property name="user"><value>demo</value></property>   <property name="password"><value>demo</value></property>
不行的 还是这个错误: Access denied for user 'sa'@'localhost' (using password: NO) Exception in thread "main" org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection 不清楚 这个SA 用户是从哪里冒出来的,再说我有自己的账号密码 at o
  • 打赏
  • 举报
回复
引用 8 楼 China_Wqs 的回复:
  <property name="maxPoolSize">15</property> <property name="maxStatements">100</property> 在池里面加,我吃饭店了。还是不行可以回复。我估摸着如果这样都不可以。可能是版本DRIVER不匹配
我单独测试hibernate.cfg.xml这个文件是可以的。 就是让spring管理hibernate就出这个问题,
小白晒太阳 2016-01-05
  • 打赏
  • 举报
回复
<!-- 配置c3p0数据库连接池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driverClass}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> </bean> 改成不读配置文件试试,把值   <property name="driverClass"><value>com.mysql.jdbc.Driver</value></property>   <property name="jdbcUrl"><value>jdbc:mysql://127.0.0.1:3306/learning?characterEncoding=utf-8</value></property>   <property name="user"><value>demo</value></property>   <property name="password"><value>demo</value></property>
Wesson96 2016-01-05
  • 打赏
  • 举报
回复
Exception in thread "main" org.hibernate.exception.GenericJDBCException: Unable to acquire JDBC Connection 这个问题我也遇到了,我是连接MySQL数据库,忘了copy jar包mysql-connector-java-5.1.37-bin.jar过去了,我也不知道你的具体情况,什么样的配置方法,假如还是不行,可能是ssh2版本的问题
realx 2016-01-05
  • 打赏
  • 举报
回复
引用 2 楼 u011106893 的回复:
[quote=引用 1 楼 realx 的回复:] <context:property-placeholder location="classpath:jdbc.properties"/>是不是classpath:jdbc.properties这个文件路径不对啊。 classpath是指 WEB-INF\classes目录和WEB-INF\lib目录,lib和classes下文件访问优先级: lib>classes。你到这2个目录下看看是否有jdbc.properties这个文件。
1.我把 JDBC 属性文件去掉换成 applicationContext.xml 中写数据库的 账号密码 以及驱动 也是同样的错误,还有没有别的可能!!![/quote] 还有可能是applicationContext.xml 这个文件路径不对,看web.xml中spring配置文件是哪个。
  • 打赏
  • 举报
回复
引用 1 楼 realx 的回复:
<context:property-placeholder location="classpath:jdbc.properties"/>是不是classpath:jdbc.properties这个文件路径不对啊。 classpath是指 WEB-INF\classes目录和WEB-INF\lib目录,lib和classes下文件访问优先级: lib>classes。你到这2个目录下看看是否有jdbc.properties这个文件。
1.我把 JDBC 属性文件去掉换成 applicationContext.xml 中写数据库的 账号密码 以及驱动 也是同样的错误,还有没有别的可能!!!
realx 2015-12-24
  • 打赏
  • 举报
回复
<context:property-placeholder location="classpath:jdbc.properties"/>是不是classpath:jdbc.properties这个文件路径不对啊。 classpath是指 WEB-INF\classes目录和WEB-INF\lib目录,lib和classes下文件访问优先级: lib>classes。你到这2个目录下看看是否有jdbc.properties这个文件。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧