diff --git a/src/main/java/com/avaje/ebean/Query.java b/src/main/java/com/avaje/ebean/Query.java index 4018687bc..c0fdf06a4 100644 --- a/src/main/java/com/avaje/ebean/Query.java +++ b/src/main/java/com/avaje/ebean/Query.java @@ -1310,7 +1310,7 @@ public interface Query { * returned. In this sense it should be treated as a read only object graph. *

*/ - Query setUseCache(boolean useBeanCache); + Query setUseCache(boolean useCache); /** * Set this to true to use the query cache. diff --git a/src/main/java/com/avaje/ebeaninternal/api/SpiQuery.java b/src/main/java/com/avaje/ebeaninternal/api/SpiQuery.java index fec134ac0..36123dab2 100644 --- a/src/main/java/com/avaje/ebeaninternal/api/SpiQuery.java +++ b/src/main/java/com/avaje/ebeaninternal/api/SpiQuery.java @@ -526,9 +526,15 @@ public interface SpiQuery extends Query { boolean hasMaxRowsOrFirstRow(); /** - * Return true if this query should use/check the bean cache. + * Return true if the bean cache should be exclude for query or lazy loading. */ - Boolean isUseBeanCache(); + boolean isExcludeBeanCache(); + + /** + * Return true if this query should use the bean cache. + * It is not skipped and bean caching is supported. + */ + boolean isUseBeanCache(); /** * Return true if this query should use/check the query cache. diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java index b14c09953..602e9b778 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/DefaultServer.java @@ -1047,8 +1047,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { } } - if (!desc.calculateUseCache(query.isUseBeanCache())) { - // not using bean cache + if (!query.isUseBeanCache()) { return null; } diff --git a/src/main/java/com/avaje/ebeaninternal/server/core/OrmQueryRequest.java b/src/main/java/com/avaje/ebeaninternal/server/core/OrmQueryRequest.java index fe93f16b0..428dad377 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/core/OrmQueryRequest.java +++ b/src/main/java/com/avaje/ebeaninternal/server/core/OrmQueryRequest.java @@ -425,7 +425,7 @@ public final class OrmQueryRequest extends BeanRequest implements BeanQueryRe } public boolean isUseBeanCache() { - return beanDescriptor.calculateUseCache(query.isUseBeanCache()); + return query.isUseBeanCache(); } /** diff --git a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java index fd112a940..e94fa62c7 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java +++ b/src/main/java/com/avaje/ebeaninternal/server/deploy/BeanDescriptor.java @@ -867,10 +867,6 @@ public class BeanDescriptor implements MetaBeanInfo, BeanType { } } - public boolean calculateUseCache(Boolean queryUseCache) { - return (queryUseCache != null) ? queryUseCache : isBeanCaching(); - } - /** * Return the cache options. */ diff --git a/src/main/java/com/avaje/ebeaninternal/server/loadcontext/DLoadContext.java b/src/main/java/com/avaje/ebeaninternal/server/loadcontext/DLoadContext.java index 608236266..fde0ebde4 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/loadcontext/DLoadContext.java +++ b/src/main/java/com/avaje/ebeaninternal/server/loadcontext/DLoadContext.java @@ -104,7 +104,7 @@ public class DLoadContext implements LoadContext { this.readOnly = query.isReadOnly(); this.disableReadAudit = query.isDisableReadAudit(); this.disableLazyLoading = query.isDisableLazyLoading(); - this.excludeBeanCache = Boolean.FALSE.equals(query.isUseBeanCache()); + this.excludeBeanCache = query.isExcludeBeanCache(); this.useProfiling = query.getProfilingListener() != null; ObjectGraphNode parentNode = query.getParentNode(); 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 34ebb9a87..e139b10bd 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/querydefn/DefaultOrmQuery.java +++ b/src/main/java/com/avaje/ebeaninternal/server/querydefn/DefaultOrmQuery.java @@ -189,7 +189,7 @@ public class DefaultOrmQuery implements SpiQuery { private boolean loadBeanCache; - private Boolean useBeanCache; + private boolean excludeBeanCache; private Boolean useQueryCache; @@ -330,6 +330,7 @@ public class DefaultOrmQuery implements SpiQuery { * This table alias is for a @History entity involved in the query and as * such we need to add a 'as of predicate' to the query using this alias. */ + @Override public void addAsOfTableAlias(String tableAlias) { if (asOfTableAlias == null) { asOfTableAlias = new ArrayList(); @@ -337,20 +338,24 @@ public class DefaultOrmQuery implements SpiQuery { asOfTableAlias.add(tableAlias); } + @Override public List getAsOfTableAlias() { return asOfTableAlias; } + @Override public Timestamp getAsOf() { return asOf; } + @Override public DefaultOrmQuery asOf(Timestamp asOfDateTime) { this.temporalMode = (asOfDateTime != null) ? TemporalMode.AS_OF : TemporalMode.CURRENT; this.asOf = asOfDateTime; return this; } + @Override public DefaultOrmQuery asDraft() { this.temporalMode = TemporalMode.DRAFT; return this; @@ -367,10 +372,12 @@ public class DefaultOrmQuery implements SpiQuery { return this; } + @Override public RawSql getRawSql() { return rawSql; } + @Override public DefaultOrmQuery setRawSql(RawSql rawSql) { this.rawSql = rawSql; return this; @@ -381,19 +388,23 @@ public class DefaultOrmQuery implements SpiQuery { return lazyLoadBatchSize; } + @Override public Query setLazyLoadBatchSize(int lazyLoadBatchSize) { this.lazyLoadBatchSize = lazyLoadBatchSize; return this; } + @Override public String getLazyLoadProperty() { return lazyLoadProperty; } + @Override public void setLazyLoadProperty(String lazyLoadProperty) { this.lazyLoadProperty = lazyLoadProperty; } + @Override public ExpressionFactory getExpressionFactory() { return expressionFactory; } @@ -411,6 +422,7 @@ public class DefaultOrmQuery implements SpiQuery { /** * Return the extra joins required to support the where clause for 'Many' properties. */ + @Override public ManyWhereJoins getManyWhereJoins() { return manyWhereJoins; } @@ -419,6 +431,7 @@ public class DefaultOrmQuery implements SpiQuery { * Return true if select all properties was used to ensure the property invoking a lazy load was * included in the query. */ + @Override public boolean selectAllForLazyLoadProperty() { if (lazyLoadProperty != null) { if (!detail.containsProperty(lazyLoadProperty)) { @@ -461,6 +474,7 @@ public class DefaultOrmQuery implements SpiQuery { return detail.removeSecondaryLazyQueries(); } + @Override public void setLazyLoadManyPath(String lazyLoadManyPath) { this.lazyLoadManyPath = lazyLoadManyPath; } @@ -495,28 +509,34 @@ public class DefaultOrmQuery implements SpiQuery { this.detail = detail; } + @Override public void setDefaultSelectClause() { detail.setDefaultSelectClause(beanDescriptor); } + @Override public void setDetail(OrmQueryDetail detail) { this.detail = detail; } + @Override public boolean tuneFetchProperties(OrmQueryDetail tunedDetail) { return detail.tuneFetchProperties(tunedDetail); } + @Override public OrmQueryDetail getDetail() { return detail; } + @Override public ExpressionList filterMany(String prop) { OrmQueryProperties chunk = detail.getChunk(prop, true); return chunk.filterMany(this); } + @Override public void setFilterMany(String prop, ExpressionList filterMany) { if (filterMany != null) { OrmQueryProperties chunk = detail.getChunk(prop, true); @@ -527,6 +547,7 @@ public class DefaultOrmQuery implements SpiQuery { /** * Setup to be a delete query. */ + @Override public void setDelete() { // unset any paging and select on the id in the case where the query // includes joins and we use - delete ... where id in (...) @@ -540,12 +561,14 @@ public class DefaultOrmQuery implements SpiQuery { /** * Set the select clause to select the Id property. */ + @Override public void setSelectId() { // clear select and fetch joins.. detail.clear(); select(beanDescriptor.getIdBinder().getIdProperty()); } + @Override public NaturalKeyBindParam getNaturalKeyBindParam() { NaturalKeyBindParam namedBind = null; if (bindParams != null) { @@ -577,10 +600,12 @@ public class DefaultOrmQuery implements SpiQuery { return null; } + @Override public DefaultOrmQuery copy() { return copy(server); } + @Override public DefaultOrmQuery copy(EbeanServer server) { DefaultOrmQuery copy = new DefaultOrmQuery(beanDescriptor, server, expressionFactory, (String) null); @@ -598,7 +623,7 @@ public class DefaultOrmQuery implements SpiQuery { copy.mapKey = mapKey; copy.id = id; copy.loadBeanCache = loadBeanCache; - copy.useBeanCache = useBeanCache; + copy.excludeBeanCache = excludeBeanCache; copy.useQueryCache = useQueryCache; copy.readOnly = readOnly; copy.sqlSelect = sqlSelect; @@ -637,26 +662,32 @@ public class DefaultOrmQuery implements SpiQuery { return this; } + @Override public PersistenceContextScope getPersistenceContextScope() { return persistenceContextScope; } + @Override public Type getType() { return type; } + @Override public void setType(Type type) { this.type = type; } + @Override public String getLoadDescription() { return loadDescription; } + @Override public String getLoadMode() { return loadMode; } + @Override public void setLoadDescription(String loadMode, String loadDescription) { this.loadMode = loadMode; this.loadDescription = loadDescription; @@ -669,6 +700,7 @@ public class DefaultOrmQuery implements SpiQuery { * Transaction is used (transaction scoped persistence context). *

*/ + @Override public PersistenceContext getPersistenceContext() { return persistenceContext; } @@ -680,6 +712,7 @@ public class DefaultOrmQuery implements SpiQuery { * Transaction is used (transaction scoped persistence context). *

*/ + @Override public void setPersistenceContext(PersistenceContext persistenceContext) { this.persistenceContext = persistenceContext; } @@ -697,26 +730,32 @@ public class DefaultOrmQuery implements SpiQuery { /** * Return true if the query detail has neither select or joins specified. */ + @Override public boolean isDetailEmpty() { return detail.isEmpty(); } + @Override public boolean isAutoTuned() { return autoTuned; } + @Override public void setAutoTuned(boolean autoTuned) { this.autoTuned = autoTuned; } + @Override public Boolean isAutoTune() { return sqlSelect ? Boolean.FALSE : autoTune; } + @Override public boolean isForUpdate() { return forUpdate; } + @Override public DefaultOrmQuery setAutoTune(boolean autoTune) { this.autoTune = autoTune; return this; @@ -748,6 +787,7 @@ public class DefaultOrmQuery implements SpiQuery { return temporalMode; } + @Override public boolean isAsOfQuery() { return asOf != null; } @@ -762,22 +802,27 @@ public class DefaultOrmQuery implements SpiQuery { return TemporalMode.SOFT_DELETED == temporalMode; } + @Override public void setMode(Mode mode) { this.mode = mode; } + @Override public boolean isUsageProfiling() { return usageProfiling; } + @Override public void setUsageProfiling(boolean usageProfiling) { this.usageProfiling = usageProfiling; } + @Override public void setLogSecondaryQuery(boolean logSecondaryQuery) { this.logSecondaryQuery = logSecondaryQuery; } + @Override public boolean isLogSecondaryQuery() { return logSecondaryQuery; } @@ -789,6 +834,7 @@ public class DefaultOrmQuery implements SpiQuery { return loggedSecondaryQueries; } + @Override public void logSecondaryQuery(SpiQuery query) { if (loggedSecondaryQueries == null) { loggedSecondaryQueries = new ArrayList>(); @@ -796,14 +842,17 @@ public class DefaultOrmQuery implements SpiQuery { loggedSecondaryQueries.add(query); } + @Override public void setParentNode(ObjectGraphNode parentNode) { this.parentNode = parentNode; } + @Override public ObjectGraphNode getParentNode() { return parentNode; } + @Override public ObjectGraphNode setOrigin(CallStack callStack) { // create a 'origin' which links this query to the profiling information @@ -845,6 +894,7 @@ public class DefaultOrmQuery implements SpiQuery { /** * Prepare the query which prepares any expressions (sub-query expressions etc) and calculates the query plan key. */ + @Override public CQueryPlanKey prepare(BeanQueryRequest request) { prepareExpressions(request); @@ -871,6 +921,7 @@ public class DefaultOrmQuery implements SpiQuery { * Used with queryPlanHash() to get a unique hash for a query. *

*/ + @Override public int queryBindHash() { int hc = (id == null ? 0 : id.hashCode()); hc = hc * 31 + (whereExpressions == null ? 0 : whereExpressions.queryBindHash()); @@ -889,6 +940,7 @@ public class DefaultOrmQuery implements SpiQuery { * values) before. *

*/ + @Override public HashQuery queryHash() { // calculateQueryPlanHash is called just after potential AutoTune tuning // so queryPlanHash is calculated well before this method is called @@ -900,14 +952,17 @@ public class DefaultOrmQuery implements SpiQuery { /** * Return the query name. */ + @Override public String getName() { return name; } + @Override public boolean isSqlSelect() { return sqlSelect; } + @Override public boolean isRawSql() { return rawSql != null; } @@ -915,6 +970,7 @@ public class DefaultOrmQuery implements SpiQuery { /** * Return any additional where clauses. */ + @Override public String getAdditionalWhere() { return additionalWhere; } @@ -922,6 +978,7 @@ public class DefaultOrmQuery implements SpiQuery { /** * Return the timeout. */ + @Override public int getTimeout() { return timeout; } @@ -929,10 +986,12 @@ public class DefaultOrmQuery implements SpiQuery { /** * Return any additional having clauses. */ + @Override public String getAdditionalHaving() { return additionalHaving; } + @Override public boolean hasMaxRowsOrFirstRow() { return maxRows > 0 || firstRow > 0; } @@ -952,45 +1011,58 @@ public class DefaultOrmQuery implements SpiQuery { return versionsEnd; } + @Override public Boolean isReadOnly() { return readOnly; } + @Override public DefaultOrmQuery setReadOnly(boolean readOnly) { this.readOnly = readOnly; return this; } - public Boolean isUseBeanCache() { + public boolean isExcludeBeanCache() { // not using L2 cache for asDraft() query - return isAsDraft() ? Boolean.FALSE : useBeanCache; + return excludeBeanCache || isAsDraft() ; } + @Override + public boolean isUseBeanCache() { + return !isExcludeBeanCache() && beanDescriptor.isBeanCaching(); + } + + @Override public boolean isUseQueryCache() { // not using L2 cache for asDraft() query return !isAsDraft() && Boolean.TRUE.equals(useQueryCache); } - public DefaultOrmQuery setUseCache(boolean useBeanCache) { - this.useBeanCache = useBeanCache; + @Override + public DefaultOrmQuery setUseCache(boolean useCache) { + this.excludeBeanCache = !useCache; return this; } + @Override public DefaultOrmQuery setUseQueryCache(boolean useQueryCache) { this.useQueryCache = useQueryCache; return this; } + @Override public boolean isLoadBeanCache() { // not using L2 cache for asDraft() query return !isAsDraft() && loadBeanCache; } + @Override public DefaultOrmQuery setLoadBeanCache(boolean loadBeanCache) { this.loadBeanCache = loadBeanCache; return this; } + @Override public DefaultOrmQuery setTimeout(int secs) { this.timeout = secs; return this; @@ -1010,23 +1082,28 @@ public class DefaultOrmQuery implements SpiQuery { this.rawWhereClause = rawWhereClause; } + @Override public DefaultOrmQuery select(String columns) { detail.select(columns); return this; } + @Override public DefaultOrmQuery fetch(String property) { return fetch(property, null, null); } + @Override public DefaultOrmQuery fetch(String property, FetchConfig joinConfig) { return fetch(property, null, joinConfig); } + @Override public DefaultOrmQuery fetch(String property, String columns) { return fetch(property, columns, null); } + @Override public DefaultOrmQuery fetch(String property, String columns, FetchConfig config) { detail.fetch(property, columns, config); return this; @@ -1037,6 +1114,7 @@ public class DefaultOrmQuery implements SpiQuery { return server.delete(this, null); } + @Override public List findIds() { // a copy of this query is made in the server // as the query needs to modified (so we modify @@ -1044,6 +1122,7 @@ public class DefaultOrmQuery implements SpiQuery { return server.findIds(this, null); } + @Override public int findRowCount() { // a copy of this query is made in the server // as the query needs to modified (so we modify @@ -1078,40 +1157,49 @@ public class DefaultOrmQuery implements SpiQuery { return server.findVersions(this, null); } + @Override public QueryIterator findIterate() { return server.findIterate(this, null); } + @Override public List findList() { return server.findList(this, null); } + @Override public Set findSet() { return server.findSet(this, null); } + @Override public Map findMap() { return server.findMap(this, null); } + @Override @SuppressWarnings("unchecked") public Map findMap(String keyProperty, Class keyType) { setMapKey(keyProperty); return (Map) findMap(); } + @Override public T findUnique() { return server.findUnique(this, null); } + @Override public FutureIds findFutureIds() { return server.findFutureIds(this, null); } + @Override public FutureList findFutureList() { return server.findFutureList(this, null); } + @Override public FutureRowCount findFutureRowCount() { return server.findFutureRowCount(this, null); } @@ -1131,6 +1219,7 @@ public class DefaultOrmQuery implements SpiQuery { * be consistent with JDBC PreparedStatement. You need to set a parameter value for each ? you * have in the query. */ + @Override public DefaultOrmQuery setParameter(int position, Object value) { if (bindParams == null) { bindParams = new BindParams(); @@ -1142,6 +1231,7 @@ public class DefaultOrmQuery implements SpiQuery { /** * Set a named bind parameter. Named parameters have a colon to prefix the name. */ + @Override public DefaultOrmQuery setParameter(String name, Object value) { if (bindParams == null) { bindParams = new BindParams(); @@ -1150,6 +1240,7 @@ public class DefaultOrmQuery implements SpiQuery { return this; } + @Override public OrderBy getOrderBy() { return orderBy; } @@ -1157,14 +1248,17 @@ public class DefaultOrmQuery implements SpiQuery { /** * Return the order by clause. */ + @Override public String getRawWhereClause() { return rawWhereClause; } + @Override public OrderBy orderBy() { return order(); } + @Override public OrderBy order() { if (orderBy == null) { orderBy = new OrderBy(this, null); @@ -1172,10 +1266,12 @@ public class DefaultOrmQuery implements SpiQuery { return orderBy; } + @Override public DefaultOrmQuery orderBy(String orderByClause) { return order(orderByClause); } + @Override public DefaultOrmQuery order(String orderByClause) { if (orderByClause == null || orderByClause.trim().length() == 0) { this.orderBy = null; @@ -1185,10 +1281,12 @@ public class DefaultOrmQuery implements SpiQuery { return this; } + @Override public DefaultOrmQuery setOrderBy(OrderBy orderBy) { return setOrder(orderBy); } + @Override public DefaultOrmQuery setOrder(OrderBy orderBy) { this.orderBy = orderBy; if (orderBy != null) { @@ -1200,6 +1298,7 @@ public class DefaultOrmQuery implements SpiQuery { /** * return true if user specified to use SQL DISTINCT (effectively excludes id property). */ + @Override public boolean isDistinct() { return distinct; } @@ -1207,6 +1306,7 @@ public class DefaultOrmQuery implements SpiQuery { /** * Internally set to use SQL DISTINCT on the query but still have id property included. */ + @Override public DefaultOrmQuery setDistinct(boolean distinct) { this.distinct = distinct; return this; @@ -1216,6 +1316,7 @@ public class DefaultOrmQuery implements SpiQuery { * Return true if this query uses SQL DISTINCT either explicitly by the user or internally defined * by ebean. */ + @Override public boolean isDistinctQuery() { return distinct || sqlDistinct; } @@ -1223,10 +1324,12 @@ public class DefaultOrmQuery implements SpiQuery { /** * Internally set to use SQL DISTINCT on the query but still have id property included. */ + @Override public void setSqlDistinct(boolean sqlDistinct) { this.sqlDistinct = sqlDistinct; } + @Override public Class getBeanType() { return beanType; } @@ -1235,10 +1338,12 @@ public class DefaultOrmQuery implements SpiQuery { return "Query [" + whereExpressions + "]"; } + @Override public TableJoin getIncludeTableJoin() { return includeTableJoin; } + @Override public void setIncludeTableJoin(TableJoin includeTableJoin) { this.includeTableJoin = includeTableJoin; } @@ -1249,41 +1354,50 @@ public class DefaultOrmQuery implements SpiQuery { return this; } + @Override public boolean isDisableLazyLoading() { return disableLazyLoading; } + @Override public int getFirstRow() { return firstRow; } + @Override public DefaultOrmQuery setFirstRow(int firstRow) { this.firstRow = firstRow; return this; } + @Override public int getMaxRows() { return maxRows; } + @Override public DefaultOrmQuery setMaxRows(int maxRows) { this.maxRows = maxRows; return this; } + @Override public String getMapKey() { return mapKey; } + @Override public DefaultOrmQuery setMapKey(String mapKey) { this.mapKey = mapKey; return this; } + @Override public Object getId() { return id; } + @Override public DefaultOrmQuery setId(Object id) { if (id == null) { throw new NullPointerException("The id is null"); @@ -1292,14 +1406,17 @@ public class DefaultOrmQuery implements SpiQuery { return this; } + @Override public BindParams getBindParams() { return bindParams; } + @Override public String getQuery() { return query; } + @Override public DefaultOrmQuery where(String addToWhereClause) { if (additionalWhere == null) { additionalWhere = addToWhereClause; @@ -1309,6 +1426,7 @@ public class DefaultOrmQuery implements SpiQuery { return this; } + @Override public DefaultOrmQuery where(Expression expression) { if (whereExpressions == null) { whereExpressions = new DefaultExpressionList(this, null); @@ -1326,6 +1444,7 @@ public class DefaultOrmQuery implements SpiQuery { return textExpressions; } + @Override public ExpressionList where() { if (whereExpressions == null) { whereExpressions = new DefaultExpressionList(this, null); @@ -1333,6 +1452,7 @@ public class DefaultOrmQuery implements SpiQuery { return whereExpressions; } + @Override public DefaultOrmQuery having(String addToHavingClause) { if (additionalHaving == null) { additionalHaving = addToHavingClause; @@ -1342,6 +1462,7 @@ public class DefaultOrmQuery implements SpiQuery { return this; } + @Override public DefaultOrmQuery having(Expression expression) { if (havingExpressions == null) { havingExpressions = new DefaultExpressionList(this, null); @@ -1350,6 +1471,7 @@ public class DefaultOrmQuery implements SpiQuery { return this; } + @Override public ExpressionList having() { if (havingExpressions == null) { havingExpressions = new DefaultExpressionList(this, null); @@ -1357,10 +1479,12 @@ public class DefaultOrmQuery implements SpiQuery { return havingExpressions; } + @Override public SpiExpressionList getHavingExpressions() { return havingExpressions; } + @Override public SpiExpressionList getWhereExpressions() { return whereExpressions; } @@ -1370,19 +1494,23 @@ public class DefaultOrmQuery implements SpiQuery { return textExpressions; } + @Override public String getGeneratedSql() { return generatedSql; } + @Override public void setGeneratedSql(String generatedSql) { this.generatedSql = generatedSql; } + @Override public Query setBufferFetchSizeHint(int bufferFetchSizeHint) { this.bufferFetchSizeHint = bufferFetchSizeHint; return this; } + @Override public int getBufferFetchSizeHint() { return bufferFetchSizeHint; } @@ -1393,30 +1521,37 @@ public class DefaultOrmQuery implements SpiQuery { return this; } + @Override public boolean isDisableReadAudit() { return disableReadAudit; } + @Override public void setBeanCollectionTouched(BeanCollectionTouched notify) { this.beanCollectionTouched = notify; } + @Override public BeanCollectionTouched getBeanCollectionTouched() { return beanCollectionTouched; } + @Override public List getIdList() { return partialIds; } + @Override public void setIdList(List partialIds) { this.partialIds = partialIds; } + @Override public boolean isFutureFetch() { return futureFetch; } + @Override public void setFutureFetch(boolean backgroundFetch) { this.futureFetch = backgroundFetch; } @@ -1431,6 +1566,7 @@ public class DefaultOrmQuery implements SpiQuery { return futureFetchAudit; } + @Override public void setCancelableQuery(CancelableQuery cancelableQuery) { synchronized (this) { this.cancelableQuery = cancelableQuery; @@ -1448,6 +1584,7 @@ public class DefaultOrmQuery implements SpiQuery { return rootTableAlias; } + @Override public void cancel() { synchronized (this) { cancelled = true; @@ -1457,6 +1594,7 @@ public class DefaultOrmQuery implements SpiQuery { } } + @Override public boolean isCancelled() { synchronized (this) { return cancelled; @@ -1471,6 +1609,7 @@ public class DefaultOrmQuery implements SpiQuery { /** * Validate all the expression properties/paths given the bean descriptor. */ + @Override public Set validate(BeanType desc) { SpiExpressionValidation validation = new SpiExpressionValidation(desc); diff --git a/src/test/java/com/avaje/tests/basic/TestQueryWithCache.java b/src/test/java/com/avaje/tests/basic/TestQueryWithCache.java index 82fd53830..17ce93b72 100644 --- a/src/test/java/com/avaje/tests/basic/TestQueryWithCache.java +++ b/src/test/java/com/avaje/tests/basic/TestQueryWithCache.java @@ -2,6 +2,7 @@ package com.avaje.tests.basic; import com.avaje.ebean.BaseTestCase; import com.avaje.ebean.Ebean; +import com.avaje.ebean.Query; import com.avaje.ebean.cache.ServerCache; import com.avaje.ebean.cache.ServerCacheManager; import com.avaje.ebeaninternal.api.SpiEbeanServer; @@ -11,6 +12,7 @@ import com.avaje.tests.model.basic.Country; import com.avaje.tests.model.basic.ResetBasicData; import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -56,4 +58,18 @@ public class TestQueryWithCache extends BaseTestCase { assertTrue(nz3 != nz4); } + + @Test + public void testSkipCache() { + + ResetBasicData.reset(); + + Ebean.find(Country.class, "NZ"); + + Query query = Ebean.find(Country.class).setId("NZ").setUseCache(false); + query.findUnique(); + + assertThat(query.getGeneratedSql()).isNotNull(); + } + } diff --git a/src/test/java/com/avaje/tests/batchload/TestQueryJoinToAssocOne.java b/src/test/java/com/avaje/tests/batchload/TestQueryJoinToAssocOne.java index 5f8d4ef2a..864e18cd0 100644 --- a/src/test/java/com/avaje/tests/batchload/TestQueryJoinToAssocOne.java +++ b/src/test/java/com/avaje/tests/batchload/TestQueryJoinToAssocOne.java @@ -50,7 +50,6 @@ public class TestQueryJoinToAssocOne extends BaseTestCase { // This will use 2 SQL queries to build this object graph List l0 = Ebean.find(Order.class) - .setUseCache(false) .select("status, shipDate") .fetch("details", "orderQty, unitPrice", new FetchConfig().query()) .fetch("details.product", "sku, name") @@ -77,7 +76,6 @@ public class TestQueryJoinToAssocOne extends BaseTestCase { // This will use 2 SQL queries to build this object graph List l0 = Ebean.find(Order.class) - .setUseCache(false) .setDisableLazyLoading(true) .select("status, shipDate") .fetch("details", "orderQty, unitPrice", new FetchConfig().query()) diff --git a/src/test/java/com/avaje/tests/query/other/TestQueryDistinct.java b/src/test/java/com/avaje/tests/query/other/TestQueryDistinct.java index eb85ddfc3..7a7e6040f 100644 --- a/src/test/java/com/avaje/tests/query/other/TestQueryDistinct.java +++ b/src/test/java/com/avaje/tests/query/other/TestQueryDistinct.java @@ -21,7 +21,6 @@ public class TestQueryDistinct extends BaseTestCase { ResetBasicData.reset(); Query query = Ebean.find(Customer.class) - .setUseCache(false) .setDistinct(true) .select("name"); @@ -48,7 +47,6 @@ public class TestQueryDistinct extends BaseTestCase { ResetBasicData.reset(); Query query = Ebean.find(Customer.class) - .setUseCache(false) .where().setDistinct(true) .select("name"); @@ -64,7 +62,6 @@ public class TestQueryDistinct extends BaseTestCase { ResetBasicData.reset(); Query query = Ebean.find(Customer.class) - .setUseCache(false) .setDistinct(true) .select("status") .where().isNotNull("status").query(); diff --git a/src/test/java/com/avaje/tests/query/other/TestWhereAnnotation.java b/src/test/java/com/avaje/tests/query/other/TestWhereAnnotation.java index a92089f1e..7d5410321 100644 --- a/src/test/java/com/avaje/tests/query/other/TestWhereAnnotation.java +++ b/src/test/java/com/avaje/tests/query/other/TestWhereAnnotation.java @@ -40,9 +40,7 @@ public class TestWhereAnnotation extends BaseTestCase { LoggedSqlCollector.start(); - List customers = Ebean.find(Customer.class) - .setUseCache(false) - .findList(); + List customers = Ebean.find(Customer.class).findList(); List orders = customers.get(0).getOrders(); orders.size(); diff --git a/src/test/java/com/avaje/tests/rawsql/TestRawSqlOrmQuery.java b/src/test/java/com/avaje/tests/rawsql/TestRawSqlOrmQuery.java index 44152f309..eebfc587e 100644 --- a/src/test/java/com/avaje/tests/rawsql/TestRawSqlOrmQuery.java +++ b/src/test/java/com/avaje/tests/rawsql/TestRawSqlOrmQuery.java @@ -32,7 +32,6 @@ public class TestRawSqlOrmQuery extends BaseTestCase { .columnMapping("r.name", "name").create(); Query query = Ebean.find(Customer.class); - query.setUseCache(false).setUseQueryCache(false); query.setRawSql(rawSql); query.where().ilike("name", "r%"); @@ -58,7 +57,6 @@ public class TestRawSqlOrmQuery extends BaseTestCase { .create(); Query query = Ebean.find(Customer.class); - query.setUseCache(false).setUseQueryCache(false); query.setRawSql(rawSql); int initialRowCount = query.findRowCount(); @@ -91,7 +89,6 @@ public class TestRawSqlOrmQuery extends BaseTestCase { .create(); Query query = Ebean.find(Customer.class); - query.setUseCache(false).setUseQueryCache(false); query.setRawSql(rawSql); int initialRowCount = query.findRowCount(); @@ -123,7 +120,6 @@ public class TestRawSqlOrmQuery extends BaseTestCase { .create(); Query query = Ebean.find(Order.class); - query.setUseCache(false).setUseQueryCache(false); query.setRawSql(rawSql); query.setMaxRows(100); @@ -144,7 +140,6 @@ public class TestRawSqlOrmQuery extends BaseTestCase { .create(); Query query = Ebean.find(Order.class); - query.setUseCache(false).setUseQueryCache(false); query.setRawSql(rawSql); query.setMaxRows(100); @@ -166,7 +161,6 @@ public class TestRawSqlOrmQuery extends BaseTestCase { .create(); Query query = Ebean.find(Order.class); - query.setUseCache(false).setUseQueryCache(false); query.setRawSql(rawSql); query.setMaxRows(100); diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml index 466673fd5..60e028cb1 100644 --- a/src/test/resources/logback-test.xml +++ b/src/test/resources/logback-test.xml @@ -76,15 +76,15 @@ - - - - + + + + - - - - + + + +