无法打开事务的JPA EntityManager;嵌套异常为org.hibernate.exception.JDBCon



我正在学习如何将Hibernate和Spring JPA用于网站。在尝试使用Postman检查数据并将数据添加到AWS RDS中的MySql数据库时。但是当我访问URI时,我收到的是500内部服务器。有人能帮我解决这个问题吗。

错误堆栈:

"org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connectionrntat org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:467)rntat org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:400)rntat org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373)rntat org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:595)rntat org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:382)rntat org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)rntat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)rntat org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)rntat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)rntat org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:174)rntat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)rntat org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)rntat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)rntat org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)rntat jdk.proxy4/jdk.proxy4.$Proxy102.save(Unknown Source)rntat com.example.FootballPred.serviceImp.ClubFootballServiceImp.addTeam(ClubFootballServiceImp.java:18)rntat com.example.FootballPred.controller.ClubFootballController.addTeam(ClubFootballController.java:21)rntat java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)rntat java.base/java.lang.reflect.Method.invoke(Method.java:577)rntat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)rntat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)rntat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)rntat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)rntat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)rntat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)rntat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071)rntat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964)rntat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)rntat org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)rntat javax.servlet.http.HttpServlet.service(HttpServlet.java:681)rntat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)rntat javax.servlet.http.HttpServlet.service(HttpServlet.java:764)rntat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)rntat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)rntat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)rntat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)rntat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)rntat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)rntat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)rntat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)rntat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)rntat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)rntat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)rntat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)rntat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)rntat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)rntat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)rntat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)rntat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)rntat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)rntat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)rntat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)rntat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)rntat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)rntat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)rntat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)rntat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)rntat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)rntat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)rntat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789)rntat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)rntat org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)rntat org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)rntat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)rntat java.base/java.lang.Thread.run(Thread.java:833)rnCaused by: org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connectionrntat org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:48)rntat org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:37)rntat org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)rntat org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)rntat org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:111)rntat org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getPhysicalConnection(LogicalConnectionManagedImpl.java:138)rntat org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.getConnectionForTransactionManagement(LogicalConnectionManagedImpl.java:276)rntat org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.begin(LogicalConnectionManagedImpl.java:284)rntat org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.begin(JdbcResourceLocalTransactionCoordinatorImpl.java:246)rntat org.hibernate.engine.transaction.internal.TransactionImpl.begin(TransactionImpl.java:83)rntat org.springframework.orm.jpa.vendor.HibernateJpaDialect.beginTransaction(HibernateJpaDialect.java:164)rntat org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:421)rnt... 64 morernCaused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30097ms.rntat com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:696)rntat com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197)rntat com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162)rntat com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)rntat org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:122)rntat org.hibernate.internal.NonContextualJdbcConnectionAccess.obtainConnection(NonContextualJdbcConnectionAccess.java:38)rntat org.hibernate.resource.jdbc.internal.LogicalConnectionManagedImpl.acquireConnectionIfNeeded(LogicalConnectionManagedImpl.java:108)rnt... 71 morernCaused by: java.sql.SQLNonTransientConnectionException: No operations allowed after connection closed.rntat com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)rntat com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)rntat com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)rntat com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)rntat com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)rntat com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:73)rntat com.mysql.cj.jdbc.ConnectionImpl.setNetworkTimeout(ConnectionImpl.java:2485)rntat com.zaxxer.hikari.pool.PoolBase.setNetworkTimeout(PoolBase.java:566)rntat com.zaxxer.hikari.pool.PoolBase.isConnectionAlive(PoolBase.java:173)rntat com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:186)rnt... 76 morernCaused by: com.mysql.cj.exceptions.ConnectionIsClosedException: No operations allowed after connection closed.rntat java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)rntat java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)rntat java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:483)rntat com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)rntat com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)rntat com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)rntat com.mysql.cj.NativeSession.checkClosed(NativeSession.java:761)rntat com.mysql.cj.jdbc.ConnectionImpl.checkClosed(ConnectionImpl.java:568)rntat com.mysql.cj.jdbc.ConnectionImpl.setNetworkTimeout(ConnectionImpl.java:2481)rnt... 79 morern",
"message": "Could not open JPA EntityManager for transaction; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection",

这些是以下文件:

application.properties:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://database-1.cogwxhggkept.ap-south-1.rds.amazonaws.com:3306/Football
spring.datasource.username=user
spring.datasource.password=user
spring.jpa.hibernate.ddl-auto=create
## Hibernate Properties
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

俱乐部足球队实体1:

@Entity
@Table(name = "FottballTeamClub")
public class ClubFootballTeamEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "footballTeamId")
private int id;
@Column(name = "footballTeamName")
private String teamName;
@Column(name = "footballTeamNat")
private String teamNameNat;
@Column(name = "footballTeamNameAbv")
private String teamNameAbv;
public ClubFootballTeamEntity() {
}
public ClubFootballTeamEntity(String teamName, String teamNameNat, String teamNameAbv) {
this.teamName = teamName;
this.teamNameNat = teamNameNat;
this.teamNameAbv = teamNameAbv;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTeamName() {
return teamName;
}
public void setTeamName(String teamName) {
this.teamName = teamName;
}
public String getTeamNameNat() {
return teamNameNat;
}
public void setTeamNameNat(String teamNameNat) {
this.teamNameNat = teamNameNat;
}
public String getTeamNameAbv() {
return teamNameAbv;
}
public void setTeamNameAbv(String teamNameAbv) {
this.teamNameAbv = teamNameAbv;
}
}

球杆足球控制器:

@RestController
@RequestMapping("/api/clubfootball/v1")
public class ClubFootballController {
@Autowired
private ClubFootballService clubFootballService;
@PostMapping("/addteam")
public ResponseEntity<ClubFootballTeamEntity> addTeam(@RequestBody ClubFootballTeamEntity team){
return ResponseEntity.ok(clubFootballService.addTeam(team));
}
}

ClubFootballRepository:

@Repository
public interface ClubFootballRepository extends JpaRepository<ClubFootballTeamEntity, Integer> {
}

ClubFootballServiceImp:

@Service
public class ClubFootballServiceImp implements ClubFootballService {
@Autowired
private ClubFootballRepository clubFootballRepository;
@Override
public ClubFootballTeamEntity addTeam(ClubFootballTeamEntity team) {
clubFootballRepository.save(team);
System.out.println(team.getTeamName());
return team;
}
}

试试这个,改变:

spring.datasource.driver-class-name

spring.datasource.driverClassName

我的问题是,在hibernate.properties中,我命名的url连接不正确。

hibernate.connection.url=jdbc:postgresql://localhost:5432/project2

但实际上它被命名为"first_db">

检查

相关内容

最新更新