如何解决此连接被关闭的异常?

时间:2019-07-16 06:44:14

标签: java spring hibernate hikaricp

在与多个用户登录时,我的应用程序抛出此异常:

Connection org.postgresql.jdbc.PgConnection@6421dd29 marked as broken because of SQLSTATE(08003), ErrorCode(0)
org.postgresql.util.PSQLException: This connection has been closed.\

也得到:

org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.TransactionException: JDBC begin transaction failed:

我试图更改hikari的配置并使其同步。

看起来第二个线程试图利用第一个线程创建的连接,而使用第二个线程的第二个线程则将其关闭。

2 个答案:

答案 0 :(得分:2)

您是否尝试过使用“实体交易” 开始交易? 您可以按照以下方式进行操作,

Class Test{

@Autowired
EntityManagerFactory entityManagerFactory;

     method(){

          EntityManager manager = entityManagerFactory.createEntityManager();
          EntityTransaction transaction = manager.getTransaction();

          transaction.begin(); //This will start the transaction
     }
}

答案 1 :(得分:0)

Spring要创建事务,但是您已经打开并已经关闭连接。这就是Spring引发异常org.springframework.transaction.CannotCreateTransactionException的原因。您必须将连接管理委派给Spring(使用JdbcTemplate),或者手动管理事务。