From 53774544766b0a34a19e89427d5a839dc9b9d490 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Tue, 29 Aug 2023 21:19:51 +1200 Subject: [PATCH] Follow up #3173 - Change BeanSet clear() to lazy load ALL properties To avoid the 1+N lazy loading queries that are invoked due to the clear() when the entity bean in the Set has a hashCode/equals implementation --- ebean-api/src/main/java/io/ebean/common/BeanSet.java | 2 +- ebean-test/src/test/java/org/tests/sets/TestO2MSet.java | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/ebean-api/src/main/java/io/ebean/common/BeanSet.java b/ebean-api/src/main/java/io/ebean/common/BeanSet.java index 2f860bb0d2..dda2b24ee9 100644 --- a/ebean-api/src/main/java/io/ebean/common/BeanSet.java +++ b/ebean-api/src/main/java/io/ebean/common/BeanSet.java @@ -119,7 +119,7 @@ private void initClear() { try { if (set == null) { if (!disableLazyLoad && modifyListening) { - lazyLoadCollection(true); + lazyLoadCollection(false); } else { set = new LinkedHashSet<>(); } diff --git a/ebean-test/src/test/java/org/tests/sets/TestO2MSet.java b/ebean-test/src/test/java/org/tests/sets/TestO2MSet.java index 59d0ccfa80..06a76b2514 100644 --- a/ebean-test/src/test/java/org/tests/sets/TestO2MSet.java +++ b/ebean-test/src/test/java/org/tests/sets/TestO2MSet.java @@ -51,10 +51,8 @@ void beanSet_when_clear_thenAddSave() { employees.clear(); sql = LoggedSql.collect(); - assertThat(sql).hasSize(3); - assertThat(sql.get(0)).contains("select t0.department_id, t0.id from o2_memp t0 where (t0.department_id)"); - assertThat(sql.get(1)).contains("select t0.id, t0.code, t0.name, t0.department_id from o2_memp t0 where t0.id = ?"); - assertThat(sql.get(2)).contains("select t0.id, t0.code, t0.name, t0.department_id from o2_memp t0 where t0.id = ?"); + assertThat(sql).hasSize(1); + assertThat(sql.get(0)).contains("select t0.department_id, t0.id, t0.code, t0.name, t0.department_id from o2_memp t0 where (t0.department_id)"); final O2MEmp employee2 = new O2MEmp("After1", "Code3"); employees.add(employee2);