Я использую Spring Boot с Ojdbc8 18.3.0.0.0. С Hikari Datasource и JPA все запросы работают нормально.Но теперь мне нужно установить тайм-аут запроса для всех запросов к базе данных, которые я пробовал разными способами:
javax.persistence.query.timeout=1000
spring.transaction.default-timeout=1
spring.jdbc.template.query-timeout=1
spring.jpa.properties.hibernate.c3p0.timeout=1
spring.jpa.properties.javax.persistence.query.timeout=1
Класс конфигурации:
@Configuration
public class JPAQueryTimeout {
@Value("${spring.jpa.properties.javax.persistence.query.timeout}")
private int queryTimeout;
@Bean
public PlatformTransactionManager transactionManager() throws Exception {
JpaTransactionManager txManager = new JpaTransactionManager();
txManager.setDefaultTimeout(queryTimeout); //Put 1 seconds timeout
return txManager;
}
}
Запрос:
List<Integer> llll = manager.createNativeQuery("select test_sleep(5) from dual")
.setHint("javax.persistence.query.timeout", 1).getResultList();
Задача базы данных занимает 5 секунд перед возвращаемым значением, но в любом случае ошибка не возникает.
Может кто-нибудь сказать мне, как установить время ожидания запроса?