我希望 Spring Boot 应用程序对 Postgres 数据库进行的 JPA 查询在 5 秒后超时。
我创建了这个 20 秒查询来测试超时:
@Query(value = "select count(*) from pg_sleep(20)", nativeQuery = true)
int slowQuery();
Run Code Online (Sandbox Code Playgroud)
我在 中设置了以下属性application.config:
spring.jpa.properties.javax.persistence.query.timeout=3000
javax.persistence.query.timeout=5000
Run Code Online (Sandbox Code Playgroud)
但是查询在 3s 或 5s 后不会超时(执行仍然需要 20s)。
奇怪的是,如果我注释slowQuery用@Transactional(timeout = 10),超时后10秒左右。
我不想注释每个查询。我正在使用 JPA 2.0 和 Tomcat 连接池。
仅通过在应用程序属性文件中设置它们就可以使超时工作需要什么魔法?