From 0da3772ae9253c68d30656cfbe51deef835b3f31 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Tue, 21 Nov 2023 22:04:47 +1300 Subject: [PATCH] #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());