【发布时间】:2021-08-09 22:35:47
【问题描述】:
我正在尝试在我的 Spring Boot Rest API 中设置查询超时。我正在执行一个存储过程(只读)。但是超时不起作用。
我使用 MS SQL 服务器作为数据源。
spring.datasource.url=jdbc:sqlserver://<servername>;instanceName=<instancename>;DatabaseName=<dbname>
春季开机版
2.4.4
尝试了以下选项 -
- 使用超时设置@Transactional 注释
@Repository
public class StoredProcImpl {
@PersistenceContext
private EntityManager entityManager;
@Transactional (timeout = 30)
public String getList() throws Exception {
StoredProcedureQuery query = this.entityManager.createNamedStoredProcedureQuery("proc");
query.setParameter("PAGE_NUMBER", offset);
query.execute();
}
- 在查询中设置提示
@Repository
public class StoredProcImpl {
@PersistenceContext
private EntityManager entityManager;
public String getList() throws Exception {
StoredProcedureQuery query = this.entityManager.createNamedStoredProcedureQuery("proc");
query.setHint("javax.persistence.query.timeout", 30);
query.setParameter("PAGE_NUMBER", offset);
query.execute();
}
还有
query.setHint("org.hibernate.timeout", 30)
所有选项都不起作用,即使 30 秒后查询也会继续等待。
感谢任何设置超时的帮助或指针。
【问题讨论】:
标签: spring spring-boot