From 58fb9e4fad5e64dd1c016772a1fca5f127c19c36 Mon Sep 17 00:00:00 2001 From: Sergey Kuznetsov Date: Wed, 13 May 2026 10:12:04 +0200 Subject: [PATCH] Add timeout support to UpdateQuery and DefaultUpdateQuery --- .../src/main/java/io/ebean/UpdateQuery.java | 16 ++++++++++++++++ .../server/querydefn/DefaultUpdateQuery.java | 11 +++++++++++ .../io/ebean/xtest/base/UpdateQueryTest.java | 10 ++++++++++ 3 files changed, 37 insertions(+) diff --git a/ebean-api/src/main/java/io/ebean/UpdateQuery.java b/ebean-api/src/main/java/io/ebean/UpdateQuery.java index a4a8743285..0309fa5834 100644 --- a/ebean-api/src/main/java/io/ebean/UpdateQuery.java +++ b/ebean-api/src/main/java/io/ebean/UpdateQuery.java @@ -205,4 +205,20 @@ public interface UpdateQuery { */ int update(); + /** + * Return the timeout used to execute this statement. + */ + int getTimeout(); + + /** + * Set a timeout on this query. + *

+ * This will typically result in a call to setQueryTimeout() on a + * preparedStatement. If the timeout occurs an exception will be thrown - this + * will be a SQLException wrapped up in a PersistenceException. + *

+ * + * @param secs the query timeout limit in seconds. Zero means there is no limit. + */ + UpdateQuery setTimeout(int secs); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultUpdateQuery.java b/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultUpdateQuery.java index 62e385cecd..56c681c952 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultUpdateQuery.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/querydefn/DefaultUpdateQuery.java @@ -84,4 +84,15 @@ public ExpressionList where() { public int update() { return query.update(); } + + @Override + public int getTimeout() { + return query.timeout(); + } + + @Override + public UpdateQuery setTimeout(int secs) { + query.setTimeout(secs); + return this; + } } diff --git a/ebean-test/src/test/java/io/ebean/xtest/base/UpdateQueryTest.java b/ebean-test/src/test/java/io/ebean/xtest/base/UpdateQueryTest.java index f33e123d54..7f5ec22496 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/base/UpdateQueryTest.java +++ b/ebean-test/src/test/java/io/ebean/xtest/base/UpdateQueryTest.java @@ -437,4 +437,14 @@ private Integer newEbasicWithUnique(String name, String other) { return b0.getId(); } + + @Test + public void timeoutPropagation() { + int timeout = 7; + + var updateQuery = DB.update(Customer.class) + .setTimeout(timeout); + + assertThat(updateQuery.getTimeout()).isEqualTo(timeout); + } }