查询花费更多时间时如何在Hibernate中引发TimeOutException?

时间:2019-05-14 06:53:36

标签: 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;
}

1 个答案:

答案 0 :(得分:0)

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

}

使用spring事务注释可以工作。