hibernate Sping Boot Hikar - Multi Datasheet java.sql.SQLException:连接已关闭[已关闭]

brgchamk  于 2023-11-21  发布在  Java
关注(0)|答案(1)|浏览(222)

编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答问题。
26天前关闭
Improve this question
应用程序运行正常几个小时,并开始面临以下异常:
"java. sql. SQLException:连接已在以下位置关闭:com.zaxxer.hikari.pool.ProxyConnection$ClosedConnection.tagda$getClosedConnection$0(ProxyConnection.java:515),com.sun.proxy.$Proxy171.tagreStatement(Unknown Source),com. zaxxer. hikari. pool. ProxyConnection. tagreStatement(ProxyConnection.java:337),com. zaxxer. hikari. pool. HikariProxyConnection. tagreStatement(www.example.com),org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepareHikariProxyConnection.java(StatementPreparerImpl.java:176)位于org. hibernate. engine. jdbc. internal. StatementPreparerImpl. jdbreQueryStatement(StatementPreparerImpl.java:151)位于org. hibernate. loader. Loader. DataQueryStatement(Loader.java:2104)at org. hibernate. loader. Loader. executeQueryStatement(Loader.java:2034)at org. hibernate. loader. Loader. executeQueryStatement(Loader.java:2012)在org. hibernate. loader. Loader. doQuery(Loader.java:953)位于org. hibernate. loader. Loader. doQueryAndInitializeNonLazyCollections(Loader.java:354)位于org. hibernate. loader. Loader. doList(Loader.java:2838)在org. hibernate. loader. Loader. doList(Loader.java:2820)位于org. hibernate. loader. Loader. listIgnoreQueryCache(Loader.java:2652)位于org. hibernate. loader. Loader. list(Loader.java:2647)位于org. hibernate. loader. custom. CustomLoader. list(CustomLoader.java:338)位于org. hibernate. internal. SessionImpl. listCustomQuery(SessionImpl.java:2131)at org. hibernate. internal. AbstractSharedSessionContract. list(AbstractSharedSessionContract.java:1163)位于org. hibernate. query. internal. NativeQueryImpl. doList(NativeQueryImpl.java:173)at org. hibernate. query. internal. AbstractProducedQuery. list(AbstractProducedQuery.java:1533)at org. hibernate. query. Query. getResultList(Query.java:165)
调用查询代码:

@Autowired
private final EntityManager entityManager;

void someMethod() {
var q = entityManager.createNativeQuery(query);
var rs = q.getResultList(); // exception at this line in stack trace
// other code
}

字符串
我们最近在这个blog之后添加了多个数据源。有没有可能是它导致了一个问题?虽然无法证明某些观点。任何帮助都非常感谢。

0sgqnhkj

0sgqnhkj1#

当使用连接池时,请确保始终关闭连接并为每个查询请求一个新连接。保持连接可能会导致池在空闲超时后关闭连接。
在Hikari中,你没有得到一个实际的连接,而是一个代理实现,其中底层资源由Hikari内部管理,因此重用这个连接必然会导致问题。
如果这个问题是由一个管理连接不好的库引起的,那么一个后备解决方案是配置Hikari允许底层连接无限期地处于空闲状态。然而,这是次优的。

相关问题