From 7afd37cd983ee21dd1e5e7c2d93edf83dbc0d14b Mon Sep 17 00:00:00 2001 From: Noemi Praml Date: Tue, 14 Nov 2023 17:05:42 +0100 Subject: [PATCH 1/2] Failing Tests with CustomerFindController --- .../model/basic/CustomerFindController.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 ebean-test/src/test/java/org/tests/model/basic/CustomerFindController.java diff --git a/ebean-test/src/test/java/org/tests/model/basic/CustomerFindController.java b/ebean-test/src/test/java/org/tests/model/basic/CustomerFindController.java new file mode 100644 index 000000000..996c80d9f --- /dev/null +++ b/ebean-test/src/test/java/org/tests/model/basic/CustomerFindController.java @@ -0,0 +1,35 @@ +package org.tests.model.basic; + +import io.ebean.bean.BeanCollection; +import io.ebean.event.BeanFindController; +import io.ebean.event.BeanQueryRequest; + +/** + * @author Noemi Praml, FOCONIS AG + */ +public class CustomerFindController implements BeanFindController { + @Override + public boolean isRegisterFor(Class cls) { + return Customer.class.isAssignableFrom(cls); + } + + @Override + public boolean isInterceptFind(BeanQueryRequest request) { + return false; + } + + @Override + public T find(BeanQueryRequest request) { + return null; + } + + @Override + public boolean isInterceptFindMany(BeanQueryRequest request) { + return false; + } + + @Override + public BeanCollection findMany(BeanQueryRequest request) { + return null; + } +} From 0da3772ae9253c68d30656cfbe51deef835b3f31 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Tue, 21 Nov 2023 22:04:47 +1300 Subject: [PATCH 2/2] #3270 Fix for use with BeanFindController and attribute queries The existence of a BeanFindController should not break the use of single attribute queries + still allow auto-tuning. --- .../main/java/io/ebeaninternal/server/core/DefaultServer.java | 2 +- .../java/io/ebeaninternal/server/deploy/BeanDescriptor.java | 2 +- .../src/test/java/io/ebean/xtest/plugin/SpiServerTest.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java index 3327cd133..8b2dc60e3 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/core/DefaultServer.java @@ -961,7 +961,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { } if (!query.isRawSql()) { query.setDefaultRawSqlIfRequired(); - if (query.isAutoTunable() && !autoTuneService.tuneQuery(query)) { + if (!query.isAutoTunable() || !autoTuneService.tuneQuery(query)) { // use deployment FetchType.LAZY/EAGER annotations // to define the 'default' select clause query.setDefaultSelectClause(); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java index 06930f128..081ae5d77 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/deploy/BeanDescriptor.java @@ -278,7 +278,7 @@ public class BeanDescriptor implements BeanType, STreeType, SpiBeanType { this.partitionMeta = deploy.getPartitionMeta(); this.tablespaceMeta = deploy.getTablespaceMeta(); this.storageEngine = deploy.getStorageEngine(); - this.autoTunable = beanFinder == null && (entityType == EntityType.ORM || entityType == EntityType.VIEW); + this.autoTunable = entityType == EntityType.ORM || entityType == EntityType.VIEW; // helper object used to derive lists of properties DeployBeanPropertyLists listHelper = new DeployBeanPropertyLists(owner, this, deploy); this.softDeleteProperty = listHelper.getSoftDeleteProperty(); diff --git a/ebean-test/src/test/java/io/ebean/xtest/plugin/SpiServerTest.java b/ebean-test/src/test/java/io/ebean/xtest/plugin/SpiServerTest.java index e5669c2dc..7fdc4b859 100644 --- a/ebean-test/src/test/java/io/ebean/xtest/plugin/SpiServerTest.java +++ b/ebean-test/src/test/java/io/ebean/xtest/plugin/SpiServerTest.java @@ -26,7 +26,7 @@ public class SpiServerTest extends BaseTestCase { BeanType beanType = pluginApi.beanType(Customer.class); assertEquals("o_customer", beanType.baseTable()); assertNotNull(pluginApi.databasePlatform()); - assertNull(beanType.findController()); + assertNotNull(beanType.findController()); assertNotNull(beanType.persistController()); assertNull(beanType.persistListener()); assertNull(beanType.queryAdapter());