mirror of
https://github.com/ebean-orm/ebean.git
synced 2026-10-24 15:55:55 +00:00
#704 - Internal refactor to use excludeBeanCache in DefaultOrmQuery
This commit is contained in:
@@ -1310,7 +1310,7 @@ public interface Query<T> {
|
||||
* returned. In this sense it should be treated as a read only object graph.
|
||||
* </p>
|
||||
*/
|
||||
Query<T> setUseCache(boolean useBeanCache);
|
||||
Query<T> setUseCache(boolean useCache);
|
||||
|
||||
/**
|
||||
* Set this to true to use the query cache.
|
||||
|
||||
@@ -526,9 +526,15 @@ public interface SpiQuery<T> extends Query<T> {
|
||||
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.
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -425,7 +425,7 @@ public final class OrmQueryRequest<T> extends BeanRequest implements BeanQueryRe
|
||||
}
|
||||
|
||||
public boolean isUseBeanCache() {
|
||||
return beanDescriptor.calculateUseCache(query.isUseBeanCache());
|
||||
return query.isUseBeanCache();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -867,10 +867,6 @@ public class BeanDescriptor<T> implements MetaBeanInfo, BeanType<T> {
|
||||
}
|
||||
}
|
||||
|
||||
public boolean calculateUseCache(Boolean queryUseCache) {
|
||||
return (queryUseCache != null) ? queryUseCache : isBeanCaching();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the cache options.
|
||||
*/
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -189,7 +189,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
|
||||
private boolean loadBeanCache;
|
||||
|
||||
private Boolean useBeanCache;
|
||||
private boolean excludeBeanCache;
|
||||
|
||||
private Boolean useQueryCache;
|
||||
|
||||
@@ -330,6 +330,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
* 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<String>();
|
||||
@@ -337,20 +338,24 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
asOfTableAlias.add(tableAlias);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getAsOfTableAlias() {
|
||||
return asOfTableAlias;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Timestamp getAsOf() {
|
||||
return asOf;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> asOf(Timestamp asOfDateTime) {
|
||||
this.temporalMode = (asOfDateTime != null) ? TemporalMode.AS_OF : TemporalMode.CURRENT;
|
||||
this.asOf = asOfDateTime;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> asDraft() {
|
||||
this.temporalMode = TemporalMode.DRAFT;
|
||||
return this;
|
||||
@@ -367,10 +372,12 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RawSql getRawSql() {
|
||||
return rawSql;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setRawSql(RawSql rawSql) {
|
||||
this.rawSql = rawSql;
|
||||
return this;
|
||||
@@ -381,19 +388,23 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return lazyLoadBatchSize;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Query<T> 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<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* 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<T> implements SpiQuery<T> {
|
||||
* 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<T> implements SpiQuery<T> {
|
||||
return detail.removeSecondaryLazyQueries();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLazyLoadManyPath(String lazyLoadManyPath) {
|
||||
this.lazyLoadManyPath = lazyLoadManyPath;
|
||||
}
|
||||
@@ -495,28 +509,34 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
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<T> 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<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* 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<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* 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<T> implements SpiQuery<T> {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> copy() {
|
||||
return copy(server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> copy(EbeanServer server) {
|
||||
|
||||
DefaultOrmQuery<T> copy = new DefaultOrmQuery<T>(beanDescriptor, server, expressionFactory, (String) null);
|
||||
@@ -598,7 +623,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
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<T> implements SpiQuery<T> {
|
||||
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<T> implements SpiQuery<T> {
|
||||
* Transaction is used (transaction scoped persistence context).
|
||||
* </p>
|
||||
*/
|
||||
@Override
|
||||
public PersistenceContext getPersistenceContext() {
|
||||
return persistenceContext;
|
||||
}
|
||||
@@ -680,6 +712,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
* Transaction is used (transaction scoped persistence context).
|
||||
* </p>
|
||||
*/
|
||||
@Override
|
||||
public void setPersistenceContext(PersistenceContext persistenceContext) {
|
||||
this.persistenceContext = persistenceContext;
|
||||
}
|
||||
@@ -697,26 +730,32 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* 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<T> setAutoTune(boolean autoTune) {
|
||||
this.autoTune = autoTune;
|
||||
return this;
|
||||
@@ -748,6 +787,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return temporalMode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAsOfQuery() {
|
||||
return asOf != null;
|
||||
}
|
||||
@@ -762,22 +802,27 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
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<T> implements SpiQuery<T> {
|
||||
return loggedSecondaryQueries;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void logSecondaryQuery(SpiQuery<?> query) {
|
||||
if (loggedSecondaryQueries == null) {
|
||||
loggedSecondaryQueries = new ArrayList<SpiQuery<?>>();
|
||||
@@ -796,14 +842,17 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
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<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* 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<T> implements SpiQuery<T> {
|
||||
* Used with queryPlanHash() to get a unique hash for a query.
|
||||
* </p>
|
||||
*/
|
||||
@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<T> implements SpiQuery<T> {
|
||||
* values) before.
|
||||
* </p>
|
||||
*/
|
||||
@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<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* 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<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* Return any additional where clauses.
|
||||
*/
|
||||
@Override
|
||||
public String getAdditionalWhere() {
|
||||
return additionalWhere;
|
||||
}
|
||||
@@ -922,6 +978,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* Return the timeout.
|
||||
*/
|
||||
@Override
|
||||
public int getTimeout() {
|
||||
return timeout;
|
||||
}
|
||||
@@ -929,10 +986,12 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* 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<T> implements SpiQuery<T> {
|
||||
return versionsEnd;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean isReadOnly() {
|
||||
return readOnly;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> 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<T> setUseCache(boolean useBeanCache) {
|
||||
this.useBeanCache = useBeanCache;
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setUseCache(boolean useCache) {
|
||||
this.excludeBeanCache = !useCache;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> 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<T> setLoadBeanCache(boolean loadBeanCache) {
|
||||
this.loadBeanCache = loadBeanCache;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setTimeout(int secs) {
|
||||
this.timeout = secs;
|
||||
return this;
|
||||
@@ -1010,23 +1082,28 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
this.rawWhereClause = rawWhereClause;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> select(String columns) {
|
||||
detail.select(columns);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> fetch(String property) {
|
||||
return fetch(property, null, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> fetch(String property, FetchConfig joinConfig) {
|
||||
return fetch(property, null, joinConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> fetch(String property, String columns) {
|
||||
return fetch(property, columns, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> fetch(String property, String columns, FetchConfig config) {
|
||||
detail.fetch(property, columns, config);
|
||||
return this;
|
||||
@@ -1037,6 +1114,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return server.delete(this, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Object> 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<T> implements SpiQuery<T> {
|
||||
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<T> implements SpiQuery<T> {
|
||||
return server.findVersions(this, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryIterator<T> findIterate() {
|
||||
return server.findIterate(this, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<T> findList() {
|
||||
return server.findList(this, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<T> findSet() {
|
||||
return server.findSet(this, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<?, T> findMap() {
|
||||
return server.findMap(this, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public <K> Map<K, T> findMap(String keyProperty, Class<K> keyType) {
|
||||
setMapKey(keyProperty);
|
||||
return (Map<K, T>) findMap();
|
||||
}
|
||||
|
||||
@Override
|
||||
public T findUnique() {
|
||||
return server.findUnique(this, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FutureIds<T> findFutureIds() {
|
||||
return server.findFutureIds(this, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FutureList<T> findFutureList() {
|
||||
return server.findFutureList(this, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FutureRowCount<T> findFutureRowCount() {
|
||||
return server.findFutureRowCount(this, null);
|
||||
}
|
||||
@@ -1131,6 +1219,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
* be consistent with JDBC PreparedStatement. You need to set a parameter value for each ? you
|
||||
* have in the query.
|
||||
*/
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setParameter(int position, Object value) {
|
||||
if (bindParams == null) {
|
||||
bindParams = new BindParams();
|
||||
@@ -1142,6 +1231,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* Set a named bind parameter. Named parameters have a colon to prefix the name.
|
||||
*/
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setParameter(String name, Object value) {
|
||||
if (bindParams == null) {
|
||||
bindParams = new BindParams();
|
||||
@@ -1150,6 +1240,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderBy<T> getOrderBy() {
|
||||
return orderBy;
|
||||
}
|
||||
@@ -1157,14 +1248,17 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* Return the order by clause.
|
||||
*/
|
||||
@Override
|
||||
public String getRawWhereClause() {
|
||||
return rawWhereClause;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderBy<T> orderBy() {
|
||||
return order();
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrderBy<T> order() {
|
||||
if (orderBy == null) {
|
||||
orderBy = new OrderBy<T>(this, null);
|
||||
@@ -1172,10 +1266,12 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return orderBy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> orderBy(String orderByClause) {
|
||||
return order(orderByClause);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> order(String orderByClause) {
|
||||
if (orderByClause == null || orderByClause.trim().length() == 0) {
|
||||
this.orderBy = null;
|
||||
@@ -1185,10 +1281,12 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setOrderBy(OrderBy<T> orderBy) {
|
||||
return setOrder(orderBy);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setOrder(OrderBy<T> orderBy) {
|
||||
this.orderBy = orderBy;
|
||||
if (orderBy != null) {
|
||||
@@ -1200,6 +1298,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* 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<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* Internally set to use SQL DISTINCT on the query but still have id property included.
|
||||
*/
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setDistinct(boolean distinct) {
|
||||
this.distinct = distinct;
|
||||
return this;
|
||||
@@ -1216,6 +1316,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
* 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<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* 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<T> getBeanType() {
|
||||
return beanType;
|
||||
}
|
||||
@@ -1235,10 +1338,12 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
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<T> implements SpiQuery<T> {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDisableLazyLoading() {
|
||||
return disableLazyLoading;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFirstRow() {
|
||||
return firstRow;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setFirstRow(int firstRow) {
|
||||
this.firstRow = firstRow;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxRows() {
|
||||
return maxRows;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setMaxRows(int maxRows) {
|
||||
this.maxRows = maxRows;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMapKey() {
|
||||
return mapKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setMapKey(String mapKey) {
|
||||
this.mapKey = mapKey;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> setId(Object id) {
|
||||
if (id == null) {
|
||||
throw new NullPointerException("The id is null");
|
||||
@@ -1292,14 +1406,17 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BindParams getBindParams() {
|
||||
return bindParams;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQuery() {
|
||||
return query;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> where(String addToWhereClause) {
|
||||
if (additionalWhere == null) {
|
||||
additionalWhere = addToWhereClause;
|
||||
@@ -1309,6 +1426,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> where(Expression expression) {
|
||||
if (whereExpressions == null) {
|
||||
whereExpressions = new DefaultExpressionList<T>(this, null);
|
||||
@@ -1326,6 +1444,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return textExpressions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExpressionList<T> where() {
|
||||
if (whereExpressions == null) {
|
||||
whereExpressions = new DefaultExpressionList<T>(this, null);
|
||||
@@ -1333,6 +1452,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return whereExpressions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> having(String addToHavingClause) {
|
||||
if (additionalHaving == null) {
|
||||
additionalHaving = addToHavingClause;
|
||||
@@ -1342,6 +1462,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DefaultOrmQuery<T> having(Expression expression) {
|
||||
if (havingExpressions == null) {
|
||||
havingExpressions = new DefaultExpressionList<T>(this, null);
|
||||
@@ -1350,6 +1471,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ExpressionList<T> having() {
|
||||
if (havingExpressions == null) {
|
||||
havingExpressions = new DefaultExpressionList<T>(this, null);
|
||||
@@ -1357,10 +1479,12 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return havingExpressions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpiExpressionList<T> getHavingExpressions() {
|
||||
return havingExpressions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SpiExpressionList<T> getWhereExpressions() {
|
||||
return whereExpressions;
|
||||
}
|
||||
@@ -1370,19 +1494,23 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return textExpressions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getGeneratedSql() {
|
||||
return generatedSql;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setGeneratedSql(String generatedSql) {
|
||||
this.generatedSql = generatedSql;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Query<T> setBufferFetchSizeHint(int bufferFetchSizeHint) {
|
||||
this.bufferFetchSizeHint = bufferFetchSizeHint;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBufferFetchSizeHint() {
|
||||
return bufferFetchSizeHint;
|
||||
}
|
||||
@@ -1393,30 +1521,37 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
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<Object> getIdList() {
|
||||
return partialIds;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setIdList(List<Object> 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<T> implements SpiQuery<T> {
|
||||
return futureFetchAudit;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCancelableQuery(CancelableQuery cancelableQuery) {
|
||||
synchronized (this) {
|
||||
this.cancelableQuery = cancelableQuery;
|
||||
@@ -1448,6 +1584,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
return rootTableAlias;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel() {
|
||||
synchronized (this) {
|
||||
cancelled = true;
|
||||
@@ -1457,6 +1594,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
synchronized (this) {
|
||||
return cancelled;
|
||||
@@ -1471,6 +1609,7 @@ public class DefaultOrmQuery<T> implements SpiQuery<T> {
|
||||
/**
|
||||
* Validate all the expression properties/paths given the bean descriptor.
|
||||
*/
|
||||
@Override
|
||||
public Set<String> validate(BeanType<T> desc) {
|
||||
|
||||
SpiExpressionValidation validation = new SpiExpressionValidation(desc);
|
||||
|
||||
@@ -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<Country> query = Ebean.find(Country.class).setId("NZ").setUseCache(false);
|
||||
query.findUnique();
|
||||
|
||||
assertThat(query.getGeneratedSql()).isNotNull();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -50,7 +50,6 @@ public class TestQueryJoinToAssocOne extends BaseTestCase {
|
||||
|
||||
// This will use 2 SQL queries to build this object graph
|
||||
List<Order> 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<Order> l0 = Ebean.find(Order.class)
|
||||
.setUseCache(false)
|
||||
.setDisableLazyLoading(true)
|
||||
.select("status, shipDate")
|
||||
.fetch("details", "orderQty, unitPrice", new FetchConfig().query())
|
||||
|
||||
@@ -21,7 +21,6 @@ public class TestQueryDistinct extends BaseTestCase {
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<Customer> query = Ebean.find(Customer.class)
|
||||
.setUseCache(false)
|
||||
.setDistinct(true)
|
||||
.select("name");
|
||||
|
||||
@@ -48,7 +47,6 @@ public class TestQueryDistinct extends BaseTestCase {
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<Customer> query = Ebean.find(Customer.class)
|
||||
.setUseCache(false)
|
||||
.where().setDistinct(true)
|
||||
.select("name");
|
||||
|
||||
@@ -64,7 +62,6 @@ public class TestQueryDistinct extends BaseTestCase {
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<Customer> query = Ebean.find(Customer.class)
|
||||
.setUseCache(false)
|
||||
.setDistinct(true)
|
||||
.select("status")
|
||||
.where().isNotNull("status").query();
|
||||
|
||||
@@ -40,9 +40,7 @@ public class TestWhereAnnotation extends BaseTestCase {
|
||||
|
||||
LoggedSqlCollector.start();
|
||||
|
||||
List<Customer> customers = Ebean.find(Customer.class)
|
||||
.setUseCache(false)
|
||||
.findList();
|
||||
List<Customer> customers = Ebean.find(Customer.class).findList();
|
||||
|
||||
List<Order> orders = customers.get(0).getOrders();
|
||||
orders.size();
|
||||
|
||||
@@ -32,7 +32,6 @@ public class TestRawSqlOrmQuery extends BaseTestCase {
|
||||
.columnMapping("r.name", "name").create();
|
||||
|
||||
Query<Customer> 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<Customer> 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<Customer> 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<Order> 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<Order> 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<Order> query = Ebean.find(Order.class);
|
||||
query.setUseCache(false).setUseQueryCache(false);
|
||||
query.setRawSql(rawSql);
|
||||
|
||||
query.setMaxRows(100);
|
||||
|
||||
@@ -76,15 +76,15 @@
|
||||
<logger name="com.avaje.ebean" level="INFO"/>
|
||||
<logger name="org.avaje.ebean" level="INFO"/>
|
||||
|
||||
<!--<logger name="org.avaje.ebean.SQL" level="TRACE"/>-->
|
||||
<!--<logger name="org.avaje.ebean.TXN" level="TRACE"/>-->
|
||||
<!--<logger name="org.avaje.ebean.SUM" level="TRACE"/>-->
|
||||
<!--<logger name="org.avaje.ebean.ELA" level="TRACE"/>-->
|
||||
<logger name="org.avaje.ebean.SQL" level="TRACE"/>
|
||||
<logger name="org.avaje.ebean.TXN" level="TRACE"/>
|
||||
<logger name="org.avaje.ebean.SUM" level="TRACE"/>
|
||||
<logger name="org.avaje.ebean.ELA" level="TRACE"/>
|
||||
|
||||
<!--<logger name="org.avaje.ebean.cache.QUERY" level="TRACE"/>-->
|
||||
<!--<logger name="org.avaje.ebean.cache.BEAN" level="TRACE"/>-->
|
||||
<!--<logger name="org.avaje.ebean.cache.NATKEY" level="TRACE"/>-->
|
||||
<!--<logger name="org.avaje.ebean.cache.COLL" level="DEBUG"/>-->
|
||||
<logger name="org.avaje.ebean.cache.QUERY" level="TRACE"/>
|
||||
<logger name="org.avaje.ebean.cache.BEAN" level="TRACE"/>
|
||||
<logger name="org.avaje.ebean.cache.NATKEY" level="TRACE"/>
|
||||
<logger name="org.avaje.ebean.cache.COLL" level="DEBUG"/>
|
||||
|
||||
<!--<logger name="org.avaje.classpath" level="INFO"/>-->
|
||||
|
||||
|
||||
Reference in New Issue
Block a user