spring-boot - @Transactional 超时在 Springboot 应用程序中对于 1 以外的值(超时 = 1)不起作用
问题描述
我正在使用 Spring Boot 2.0.2.RELEASE 中的 spring-boot-starter-data-jpa,使用 spring-data-jpa。数据库是甲骨文。JDK 1.8。
我在@Transactional
调用长时间运行的查询的方法之上使用。当事务超时设置为 1 时,事务在 1 秒内超时。当@Transaction
nis to timeout > 1 时,没有超时异常。查询运行我们得到响应。这是我的代码的快照:
@Transactional(propagation = Propagation.REQUIRES_NEW, timeout = 5)
public List<Pojo> doStuff() {
result = myRepository.findDetails(); -- This call long running native query
...
}
奇怪的是,当应用程序在调试模式下运行并且断点保留在对存储库方法的调用时,这会起作用。我试过以下
javax.persistence.query.timeout
有提示也没有超时server.connection-timeout=3s
- 不工作spring.jpa.properties.javax.persistence.query.timeout=10
- 不工作oracle.jdbc.ReadTimeout
- 有效,但在指定时间不超时。
如果提到 100,那么它有时会在 1 分钟内抛出异常,有时会更少/更多。我们在 5 分钟后收到了 DB 的回复。我们想在此之前超时并向客户端发送超时响应。
解决方案
推荐阅读
- wordpress - wordpress 将 https 域重定向到 http 站点
- c++ - Catch2 GENERATE 宏在内部是如何工作的?
- javascript - 这是 Vercel 的错误吗?找不到模块“./model”
- css - 当没有足够的项目时,网格固定行之间的间隙?
- javascript - 如何从 JavaScript 中的对象中删除所有循环引用?
- python - 循环未在 python 中启动
- python - 我的 python 键盘记录器没有加载 SyntaxError
- cross-domain - 如何跨子域保留引荐来源网址(Referer HTTP 标头)?
- python - Pandas Col 使用键、值对进行 dict,其中值是字符串出现的频率
- vue.js - 通过 v-for 的模板数据