From 8c800e992d27ea7ab6c85d91c6a15297f86f03e8 Mon Sep 17 00:00:00 2001 From: Roland Praml Date: Tue, 12 Apr 2022 13:51:25 +0200 Subject: [PATCH] Fix beanCache order by & clear did not work (cherry picked from commit 4dee827fda9d401f39beb18838c7fff60e0624ef) --- .../ebeaninternal/server/core/OrmQueryRequest.java | 6 +++--- .../org/tests/query/orderby/TestOrderByClear.java | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java index 6ff7e5acb..834ec2a04 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java @@ -524,7 +524,7 @@ public final class OrmQueryRequest extends BeanRequest implements SpiOrmQuery } if (result instanceof BeanList) { OrderBy orderBy = query.getOrderBy(); - if (orderBy != null) { + if (orderBy != null && !orderBy.isEmpty()) { // in memory sort after merging the cache hits with the DB hits beanDescriptor.sort(((BeanList) result).getActualList(), orderBy.toStringFormat()); } @@ -543,7 +543,7 @@ public final class OrmQueryRequest extends BeanRequest implements SpiOrmQuery @Override public List beanCacheHits() { OrderBy orderBy = query.getOrderBy(); - if (orderBy != null) { + if (orderBy != null && !orderBy.isEmpty()) { beanDescriptor.sort(cacheBeans, orderBy.toStringFormat()); } return cacheBeans; @@ -552,7 +552,7 @@ public final class OrmQueryRequest extends BeanRequest implements SpiOrmQuery @Override public Map beanCacheHitsAsMap() { OrderBy orderBy = query.getOrderBy(); - if (orderBy != null) { + if (orderBy != null && !orderBy.isEmpty()) { beanDescriptor.sort(cacheBeans, orderBy.toStringFormat()); } return cacheBeansToMap(); diff --git a/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByClear.java b/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByClear.java index c0b7bfd7e..061e0da9f 100644 --- a/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByClear.java +++ b/ebean-test/src/test/java/org/tests/query/orderby/TestOrderByClear.java @@ -6,6 +6,7 @@ import io.ebean.OrderBy; import io.ebean.Query; import org.junit.jupiter.api.Test; import org.tests.model.basic.Order; +import org.tests.model.basic.OrderDetail; import org.tests.model.basic.ResetBasicData; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -37,5 +38,18 @@ public class TestOrderByClear extends BaseTestCase { assertTrue(sql.contains("order by t0.ship_date")); } + + @Test + public void testWithCache() { + ResetBasicData.reset(); + + Query query = DB.find(OrderDetail.class).where().idIn(1,2,3).query(); + query.setUseCache(true); + query.findList(); + query.order().asc("cretime").findList(); // hit cache + query.order().clear(); + query.findList(); // hit cache again + + } }