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

无法使用Spring Hibernate连接到MySQL数据库

巢权
2023-03-14

我在Spring是全新的,在Spring Hibernate无法连接到我的MySQL数据库。我得到

请求处理失败;嵌套异常为:org.springframework.transaction.CanNotCreateTransactionException:

无法打开事务的JPA EntityManager;嵌套异常为javax.persistence.persistenceException:org.hibernate.exception.GenericJDBcException:无法打开连接

我的ApplicationContext.xml

<context:annotation-config />
<context:component-scan base-package="Zoostore" />
<tx:annotation-driven />
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/zoostore?characterEncoding=UTF-8"/>
    <property name="username" value="root"/>
    <property name="password" value="your_password"/>
</bean>


<bean id="entityManagerFactory"
      class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
      p:dataSource-ref="dataSource"
      />

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

<bean id="transactionManager"
      class="org.springframework.orm.jpa.JpaTransactionManager"
      p:entityManagerFactory-ref="entityManagerFactory"
      p:persistenceUnitName="BookJpaPersistenceUnit"/>

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

这是我的控制器代码的一部分,我试图将数据存储到数据库中,并从中获取数据

@RequestMapping(value = "saveadvert", method = RequestMethod.POST)
public ModelAndView saveAdvert(Advert advert) {
    advert.setUserId(1);
    advertService.persist(advert);
    return new ModelAndView("test", "allAdverts", advertService.getAll());

这是我得到的例外:

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Could not open connection
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)
    org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:868)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

如果有必要我可以提供根本原因

共有1个答案

百里伟
2023-03-14

不确定是哪种错误,我提到了我所满足的条件。

  1. 确保您打开了mysql服务,您可以测试将其与IDE数据库功能连接,如IDEA。
  2. 小心usessl=false,有时会致命。
  3. 如果您的mysql-connector-java版本高于8.*,则可能需要将datasource-driver-name更改为com.mysql.cj.jdbc.driver

虽然Spring会帮助你改变。

  1. 如果使用表名指定jpa,则为列。确保使用正确的语法@table(name='xxx')@column(name='xxx')
  2. 维护mysql服务器的端口。

在窗户里。netstat-ano findstr:3306

    null

在spring-boot中,您可以自动设置配置。但你需要把文件放回原处。

  • xx.yml需要放入资源(实际上,您需要将包指定为resources包)
  • XXXApplication.class(spring-boot-starter类应该在其他类之外,或者您应该指定其他类的路径。
 类似资料:
  • 我无法使用客户机SquirrelSQL连接到MySQL。我以前曾设法连接到Oracle和Derby,但这次,我不知道我做错了什么。 我已经在我的Mac上安装了MySQL,以下步骤: > 要确保安装安全,请执行以下操作: 要创建新数据库: 要知道数据库存储在哪里: 创建一个表 在我遵循这些步骤之后: MySQL安装在/usr/local/ceral/MySQL/5.6.17下 在SQuirreL中,

  • 当我在Postman中点击url(http://localhost:8080/pjt/samples)以获取json数据时,它显示以下错误。 1)pom.xml 2)模型: .________/\/'___()____\\\\(()_'_''/'\\\\\\\/))()))'___.__,////===================================================

  • 我创建了一个简单的类来测试与我的localhost数据库的通信,这是我用Mysql Workbench创建的。Mysql服务器正在运行。JDBC驱动程序被添加到我的项目的类路径中。 当我运行程序时,我得到以下异常: 线程“main”com.mysql.cj.jdbc.Exceptions.CommunicationsException异常:通信链接失败 最后一个成功发送到服务器的数据包是在0毫秒前

  • 我无法连接到MySQL数据库。它发生在更新MySQL和JDK之后。我添加了,但没有结果。这是我从eclipse中得到的一个例外: 不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQL 5.5.45、5.6.26和5.7.6的要求,如果未设置explicit选项,默认情况下必须建立SSL连接。为了符合不使用SSL的现有应用程序,verifyServerCertificate属性设置为“f

  • 我正在尝试连接我的android应用程序,该应用程序使用php将登录页面连接到数据库。它正在连接到数据库。但它并不是从表中检索所有列。相反,只获取两个冒号。下面是代码 请帮我解决这个问题。 这里是登录表单的PHP代码 我的logcat显示以下错误。 但它显示点击提交按钮后停止工作,我需要检索数据显示在Android模拟器上 包com。实例主要的导入java。木卫一。缓冲读取器;导入java。木卫一

  • 我最近做了一个项目,涉及使用java中的Swing在线连接到mysql数据库。然后我决定将项目转换为javaFX并尝试复制代码以连接到mysql数据库。 这是我的代码: 这是FXML文件的代码 然而,当我点击运行时,它就崩溃了,我得到错误“JavaSE二进制平台已经停止工作”。它在我以前使用摆动的应用程序中工作得很好。切换到javafx时,我所做的唯一改变是我使用了jdk 1.8而不是jdk 11