当前位置: 首页 > 知识库问答 >
问题:

为什么带Hibernate的Spring Mvc应用程序会抛出错误:无法获取JDBC连接

陈阳舒
2023-03-14

我按照以下链接上的教程:教程Spring MVC,我使用了Ubunto、MySQL和Eclipse,但在运行时我收到了一个错误,在错误的跟踪下方:

根本原因

org.springframework.aop.framework.CannotCreateTransactionException:无法为事务打开Hibernate会话;嵌套异常nterceptor.interceptJDBCConnectionException:无法获取JDBC连接roxy.java:6555. HibernateTransactionMorg.o7planning.springmvcforms.controller.开始(HibernateTransactionM32fb6e31.applicant)java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0AbstractPlatformTransactionMjava.base/jdk.internal.reflect.NativeMethodAccessorImpl.invokeTransaction(AbstractPlatformTransactionMmpl.java:77)java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invokeTransactionA观Smpl.java:43TransactionIfNecessary(TransactionA观Sjava.base/java.lang.reflect.Method.invoke)ethod.java:568TransactionA观Sorg.springframework.web.method.support.with inTransaction(TransactionA观Support.java:276)org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)org.springframework.aop.framework.ReflectiveMethod odInvocation.proceed(ReflectiveMethod odI)org.springframework.transaction.CglibAopProxy$DynamicAdvedIorg.hibernate.exception.(CglibAopPorg.springframework.orm.hibernate)anager.doMyController$$EnhancerBySpringCGLIB$$anager.java:541列表()org.springframework.transaction.support.(本机方法)anager.get(NativemetodAccessorIanager.java:373)org.springframework.transaction.interceptor.(委托方法upport.create)upport.java:427(Morg.springframework.transaction.interceptor.)upport.invokeHttpServlet. service(HttpServlet. java: 764)org. apache. tomcat. webocket. server。WsFilter. doFilter(WsFilter. java: 53)

在配置属性文件下面:

# DataSource

ds.database-driver=com.mysql.jdbc.Driver
ds.url=jdbc:mysql://localhost:3306/my_databse?autoReconnect=true&useSSL=false
ds.username=root
ds.password=mypassword


# Hibernate Config

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=true
current_session_context_class=thread

下面是用于配置Hibernate的函数:

 @Bean(name = "dataSource")
 public DataSource getDataSource() {
     DriverManagerDataSource dataSource = new DriverManagerDataSource();

     dataSource.setDriverClassName(env.getProperty("ds.database-driver"));
     dataSource.setUrl(env.getProperty("ds.url"));
     dataSource.setUsername(env.getProperty("ds.username"));
     dataSource.setPassword(env.getProperty("ds.password"));
     
     return dataSource;
 }

下面是创建会话工厂对象的函数:

@Autowired
@Bean(name = "sessionFactory")
public SessionFactory getSessionFactory(DataSource dataSource)throws Exception  {    
    Properties properties = new Properties();      
         // See: ds-hibernate-cfg.properties
     properties.put("hibernate.dialect", env.getProperty("hibernate.dialect"));
     properties.put("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
     properties.put("current_session_context_class", env.getProperty("current_session_context_class"));
     
     LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
     factoryBean.setPackagesToScan(new String[] { "org.o7planning.springmvcforms.entity" });       
     
     factoryBean.setDataSource(dataSource);
     factoryBean.setHibernateProperties(properties);
     factoryBean.afterPropertiesSet();
     //
    SessionFactory sf = factoryBean.getObject();
    return sf;
}

这个错误的来源是什么?

共有1个答案

姜景辉
2023-03-14

我找到了解决方案,对于遇到同样问题的人。事实上,Mysql的版本是8.0.28,因此有必要使用8.0.11版本的Mysql连接器并使用波纹管格式下的驱动程序配置:

ds.database-d=com.mysql.cj.jdbc.Driver

而不是

ds.database-d=com.mysql.jdbc.Driver

希望能有所帮助

 类似资料:
  • 问题内容: 我已经在两周前创建了一个程序(+ ),现在它在加载JDBC驱动程序时遇到了问题(到目前为止还没有发生)。因此,我的文件如下所示: 看来这个文件很清楚。但是,在我尝试创建bean 时无法加载JDBC驱动程序的主要问题是什么。 其它文件: 数据源文件 属性文件 错误: 任何人? 提前致谢 问题答案: 摆脱财产的尽头 Spring使用反射和该属性的值通过完全限定的类名加载实例。没有所谓的班级

  • 我正在尝试创建一个新的react应用程序: 安装似乎工作正常,但当我尝试的应用程序,我得到一个错误: C:\。。。\我的应用程序\node\u modules\react scripts\scripts\utils\verifyTypeScriptSetup。js:239 appTsConfig。编译器选项[选项]=值^ TypeError:无法在对象的verifyTypeScriptSetup(

  • 我有一个Spring Hibernate Tomcat MySql应用程序正在生产中,我遇到了一个问题。我认为应用程序没有关闭它的jdbc连接,当它达到极限(目前为200)时,应用程序停止响应,我必须重新启动tomcat。我需要在某处关闭此连接吗?这是我的数据源: 这是从3天到现在,应用程序监控连接的图像 这是我在卡塔琳娜号上所犯错误的摘录。输出日志文件: 类型异常报告 消息请求处理失败;嵌套异常

  • 问题内容: 我有这种方法: 映射: Person.hbm.xml Cars.hbm.xml 此方法适用于单个线程,并且在多个线程上,给我一个错误: AOP交易: 注意:当我在更新后添加Thread.sleep(5000)时,就可以了。 但是这种解决方案并不干净。 问题答案: 我有汽车->(1-n)个地方。而且我在表位置(id_car)有一个外键。此外键没有索引。当我向该外键添加索引时,我的问题已解

  • 我已经在谷歌上搜索了4个多小时的stackoverflow来寻找我的问题的解决方案,阅读并试图了解正在发生的事情,但我没有遇到与我的问题相关的解决方案,所以抱歉,如果这听起来像是重复的,我会尽力解释到底发生了什么,这样我就可以深入了解C3P0的内部工作。 我有一个运行在Tomcat上的SpringMVC web应用程序,其中Hibernate、JPA和C3P0是我的池资源。重新加载页面时,应用程序

  • 我有一个Hibernate和光数据源的Spring Boot项目。如果我使用注入的SessionFactory对象来获取会话对象,几天后,我会发现与数据库操作相关的任何方法都有这样的异常(只有重新启动才能解决这个问题): 似乎手动使用的会话使此问题。(我有类似的项目,具有相同的配置和功能,但没有注入SessionFactory和Session...我根本没有这样的问题) 应用程序. yaml: 数