io.ebeaninternal.server.core.SpiOrmQueryRequest Maven / Gradle / Ivy
package io.ebeaninternal.server.core;
import io.ebean.QueryIterator;
import io.ebean.Version;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.SpiQuery;
import io.ebeaninternal.server.deploy.BeanDescriptor;
import io.ebeanservice.docstore.api.DocQueryRequest;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import java.util.function.Predicate;
/**
* Defines the ORM query request api.
*/
public interface SpiOrmQueryRequest extends BeanQueryRequest, DocQueryRequest {
/**
* Return the query.
*/
@Override
SpiQuery query();
/**
* Return the associated BeanDescriptor.
*/
BeanDescriptor descriptor();
/**
* Prepare the query for execution.
*/
void prepareQuery();
/**
* This will create a local (readOnly) transaction if no current transaction
* exists.
*
* A transaction may have been passed in explicitly or currently be active
* in the thread local. If not, then a readOnly transaction is created to
* execute this query.
*
*/
void initTransIfRequired();
/**
* Will end a locally created transaction.
*
* It ends the transaction by using a rollback() as the transaction is known
* to be readOnly.
*
*/
void endTransIfRequired();
/**
* Execute the query as a delete.
*/
int delete();
/**
* Execute the query as a update.
*/
int update();
/**
* Execute the query as findById.
*/
Object findId();
/**
* Execute the find row count query.
*/
int findCount();
/**
* Execute the find ids query.
*/
List findIds();
/**
* Execute findEach iterating results one bean at a time.
*/
void findEach(Consumer consumer);
/**
* Execute findEach with a batch consumer.
*/
void findEach(int batch, Consumer> batchConsumer);
/**
* Execute the find returning a QueryIterator and visitor pattern.
*/
void findEachWhile(Predicate consumer);
/**
* Execute the find returning a QueryIterator.
*/
QueryIterator findIterate();
/**
* Execute the finVersions() query.
*/
List> findVersions();
/**
* Execute the query as findList.
*/
List findList();
/**
* Execute the query as findSet.
*/
Set findSet();
/**
* Execute the query as findMap.
*/
Map findMap();
/**
* Execute the findSingleAttributeCollection query.
*/
> A findSingleAttributeCollection(A collection);
/**
* Execute returning the ResultSet.
*/
SpiResultSet findResultSet();
/**
* Try to get the query result from the query cache.
*/
A getFromQueryCache();
/**
* Maybe hit the bean cache returning true if everything was obtained from the
* cache (that there were no misses).
*
* Do this for findList() on many natural keys or many Ids.
*/
boolean getFromBeanCache();
/**
* Return the bean cache hits (when all hits / no misses).
*/
List beanCacheHits();
/**
* Return the bean cache hits for findMap (when all hits / no misses).
*/
Map beanCacheHitsAsMap();
/**
* Return the bean cache hits for findMap (when all hits / no misses).
*/
Set beanCacheHitsAsSet();
/**
* Reset Bean cache mode AUTO - require explicit setting for bean cache use with findList().
*/
void resetBeanCacheAutoMode(boolean findOne);
/**
* Return the Database platform like clause.
*/
String dbLikeClause(boolean rawLikeExpression);
/**
* Escapes a string to use it as exact match in Like clause.
*/
String escapeLikeString(String value);
/**
* Mark the underlying transaction as not being query only.
*/
void markNotQueryOnly();
/**
* Return true if this query is expected to use the doc store.
*/
boolean isUseDocStore();
/**
* Return true if delete by statement is allowed for this type given cascade rules etc.
*/
boolean isDeleteByStatement();
/**
* Return true if hitting bean cache and returning all beans from cache.
*/
boolean isGetAllFromBeanCache();
}