gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:47:42 25 4
gpt4 key购买 nike

我是 Spring 的新手,无法通过 Spring Hibernate 连接到我的 MySQL 数据库。我明白了

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

我的 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"/>

这是我的 Controller 代码的一部分,我尝试将数据存储到数据库并从中获取数据

@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. 确保你打开了mysql服务,你可以测试连接IDE数据库功能,比如IDEA。
  2. 注意useSSL=false,有时它会是致命的。
  3. 如果您的 mysql-connector-java 版本高于 8.*,您可能需要将 datasource-driver-name 更改为 com.mysql.cj.jdbc.Driver

Though spring will help you change.

  1. 如果您指定带有表名、列的 jpa。确保使用正确的语法 @Table(name='xxx') @Column(name= 'xxx')
  2. 注意 mysql 服务器的端口。

In windows. netstat -ano |findstr: 3306

taskkill /PID enterPID /F

In Linux netstat -anp |grep 3306 kill -9 pid

  • 检查 gradle 或 maven 依赖
  • 这就是我卡住的地方。

In spring-boot, you can make the configuration set up automatically. But you need to make the files right in their places.

  • xx.yml需要放入资源(在IDEA中需要指定包为资源包)
  • xxxApplication.class(spring-boot-starter类应该在其他类之外,或者指定其他类的路径。

关于mysql - 无法使用 Spring Hibernate 连接到 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29489232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com