JPA return 何时连接到数据库池
When does JPA return connection to db pool
我有一个 Restendpoint,可以调用数据库 (jpa) 来检查权限,然后进行外部调用。这个外部调用的结果是 returned 给调用者。当外部调用花费很长时间时,我得到以下异常:
java.lang.Exception: Apparent connection leak detected
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
25 lines skipped for [org.hibernate]
at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:196)
at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:88)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143)
似乎 jpa 保持数据库池的连接直到 restendpoint returns 响应。我想在权限检查完成后强制 jpa return 连接。有没有办法做到这一点(如注释)?
我的问题的解决方案是禁用 spring.jpa.open-in-view。在这种情况下,数据库连接在 jpa 使用后立即返回到数据库池。缺点是需要单独加载相关数据
我有一个 Restendpoint,可以调用数据库 (jpa) 来检查权限,然后进行外部调用。这个外部调用的结果是 returned 给调用者。当外部调用花费很长时间时,我得到以下异常:
java.lang.Exception: Apparent connection leak detected
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128)
25 lines skipped for [org.hibernate]
at org.springframework.data.jpa.repository.query.JpaQueryExecution$SingleEntityExecution.doExecute(JpaQueryExecution.java:196)
at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:88)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143)
似乎 jpa 保持数据库池的连接直到 restendpoint returns 响应。我想在权限检查完成后强制 jpa return 连接。有没有办法做到这一点(如注释)?
我的问题的解决方案是禁用 spring.jpa.open-in-view。在这种情况下,数据库连接在 jpa 使用后立即返回到数据库池。缺点是需要单独加载相关数据