#java #sql #hibernate #session-timeout
Вопрос:
Я пытаюсь установить тайм-аут таким образом, чтобы, если для возврата запроса на гибернацию потребуется больше определенного времени, я хотел бы завершить запрос и создать исключение. Но никогда не возникает исключение, каждый раз, когда запрос успешно завершается, даже если время ожидания установлено равным 0. Вот кодовый блок:
final Query<T> query = this.currentSession()
.createQuery(criteria);
dateParameters.forEach(query::setParameter);
numberParameters.forEach(query::setParameter);
textParameters.forEach(query::setParameter);
List<T> result = new ArrayList<>();
try {
result = query.setTimeout(0).list();
} catch (Exception e) {
e.printStackTrace();
throw new TimeoutException("Timeout!!!");
}
return resu<
Я также пробовал использовать:
.setHint("javax.persistence.query.timeout", 1).list();
.setHint("org.hibernate.timeout", 0).list();
Определенно чего-то здесь не хватает, любая помощь будет очень признательна!
Ответ №1:
Поддержка тайм-аутов зависит от поддержки драйверов JDBC, и большинство драйверов JDBC не поддерживают этот AFAIK. Однако обычно существуют настройки для тайм-аутов глобальной блокировки/запроса/инструкции.