From 579812d7171292cd939895e12f1570287b91c371 Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Mon, 30 Nov 2015 16:50:26 +1300 Subject: [PATCH] #455 - Should not generate "FOR UPDATE" for delete query --- .../server/querydefn/DefaultOrmQuery.java | 1 + .../com/avaje/tests/delete/TestDeleteByQuery.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/main/java/com/avaje/ebeaninternal/server/querydefn/DefaultOrmQuery.java b/src/main/java/com/avaje/ebeaninternal/server/querydefn/DefaultOrmQuery.java index 7b2dbaec4..2dfe91490 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/querydefn/DefaultOrmQuery.java +++ b/src/main/java/com/avaje/ebeaninternal/server/querydefn/DefaultOrmQuery.java @@ -435,6 +435,7 @@ public class DefaultOrmQuery implements SpiQuery { // includes joins and we use - delete ... where id in (...) maxRows = 0; firstRow = 0; + forUpdate = false; setSelectId(); } diff --git a/src/test/java/com/avaje/tests/delete/TestDeleteByQuery.java b/src/test/java/com/avaje/tests/delete/TestDeleteByQuery.java index 9e531b350..cb415acbb 100644 --- a/src/test/java/com/avaje/tests/delete/TestDeleteByQuery.java +++ b/src/test/java/com/avaje/tests/delete/TestDeleteByQuery.java @@ -51,6 +51,21 @@ public class TestDeleteByQuery extends BaseTestCase { assertThat(list).isEmpty(); } + @Test + public void testWithForUpdate() { + + EbeanServer server = Ebean.getDefaultServer(); + if (server.getName().equals("mysql")) { + // MySql does not the sub query selecting from the delete table + return; + } + + server.find(Customer.class) + .where().eq("name","FatsDomino") + .query().setForUpdate(true) + .delete(); + } + @Test public void testCommit() {