java - 当查询花费更多时间时,如何在 Hibernate 中抛出 TimeOutException?

标签 java hibernate exception timeout

当我的查询有时需要超过 30 分钟才能运行时。我想抛出 timeoutQueryException

我使用 Hibernate 5.4.0 版本并使用 Java 1.8 连接到 Oracle 12c 服务器

我正在使用这个代码块。我设置了超时,但它不起作用。当需要很长时间查询时没有遇到其他异常我必须等待响应

public List<EntityModel> search(EntityModel model) {
    List list = new ArrayList<EntityModel>();
    try {

        Criteria criteria = createCriteria(model);

        if (criteria != null) {
            int maxResults = PropertyUtil.getDBMaxResults();
            criteria.setMaxResults(maxResults);


            appendProjections(criteria);
            appendReadDescriptor(criteria);
            appendTransformer(criteria);
            criteria.setTimeout(10000);//setting 10 second but it is not work

            list = criteria.list();

        }
    } catch (Exception e) {

    }
    return list;
}

最佳答案

@Transactional(timeout=10)
@Override
public List<EntityModel> search(EntityModel model) {

}

使用 Spring 事务注释是有效的。

关于java - 当查询花费更多时间时,如何在 Hibernate 中抛出 TimeOutException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56124563/

相关文章:

java - Dropwizard 应用程序中 Postgres 的自动增量

java - File.toURI().toURL() 怎么会抛出异常?

java - 使用 ehcache 缓存 java.util.Map

java - JPA(使用 Hibernate)重新连接 @OneToMany 中的现有实体 -

java - 在从 Spring MVC 作为 JSON 发送时动态忽略 Java 对象中的字段

c++ - 为什么这个程序无法捕获异常?

Java smartcardio APDU 响应超时

java - 如何在selenium测试框架中生成没有主类的可运行jar文件?

java - 我可以在 Java 中进行 RSA 加密但在 PHP 中解密吗?

java - Cloud Stream中的@EnableBinding后面是做什么的?