Я хочу, чтобы запросы JPA, сделанные моим приложением Spring Boot к базе данных Postgres, истекали через 5 секунд.
Я создал этот 20-секундный запрос для проверки тайм-аутов:
@Query(value = "select count(*) from pg_sleep(20)", nativeQuery = true)
int slowQuery();
Iзадали следующие свойства в application.config
:
spring.jpa.properties.javax.persistence.query.timeout=3000
javax.persistence.query.timeout=5000
Но время ожидания запроса не истекает через 3 с или 5 с (выполнение все равно занимает 20 с).
Странно, если я аннотируюslowQuery
с @Transactional(timeout = 10)
, время ожидания истекает через 10 с или около того.
Я бы предпочел не комментировать каждый запрос.Я использую JPA 2.0 и пул соединений Tomcat.
Какая магия требуется для того, чтобы тайм-аут работал, просто установив их в файле свойств приложения?