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); + } }