【发布时间】:2020-05-09 19:08:26
【问题描述】:
我希望有一个选项可以将所有 Spring jpa 查询限制在某个时间限制内。如果查询花费的时间超过指定的限制,则应将其取消。据我所知,这可以通过使用javax.persistence.query.timeout 来实现,因为我在 Spring 上下文中:
spring:
jpa:
properties:
javax.persistence.query.timeout: 10000
这应该会将所有从 spring 存储库执行的查询限制为 30 秒,但它不起作用。此存储库方法需要 20 秒:
@Query(value = "select count(*) from pg_sleep(20)", nativeQuery = true)
int slowQuery();
我使用 Postgresql 9.6.11 和 Postgresql 10.5 进行了尝试。
这些 Postgres 版本有问题吗?有没有其他方法可以实现查询执行超时?
【问题讨论】:
-
一般来说它是一个查询提示,如果它在全局定义时起作用,取决于您使用的休眠版本。它应该适用于 Hibernate 5.4.6 及更高版本。
-
我的休眠版本是:
5.4.10.Final -
相关的bug是:hibernate.atlassian.net/browse/HHH-13493仔细检查你是否有5.4.10。
-
如果您的最终目标是查找慢查询,请考虑使用
AvailableSettings.LOG_SLOW_QUERY:docs.jboss.org/hibernate/orm/5.4/javadocs/org/hibernate/cfg/… -
@RobertNiestroj 我确认我有版本
5.4.10.Final
标签: spring postgresql hibernate jpa spring-data-jpa