package io.ebeaninternal.server.core; import io.ebean.QueryIterator; import io.ebean.Version; import io.ebean.bean.BeanCollection; import io.ebeaninternal.api.SpiQuery; import io.ebeaninternal.server.deploy.BeanDescriptor; import io.ebeanservice.docstore.api.DocQueryRequest; 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<T> extends DocQueryRequest<T> { /** * Return the query. */ @Override SpiQuery<T> getQuery(); /** * Return the associated BeanDescriptor. */ BeanDescriptor<?> getBeanDescriptor(); /** * This will create a local (readOnly) transaction if no current transaction * exists. * <p> * 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. * </p> */ void initTransIfRequired(); /** * Will end a locally created transaction. * <p> * It ends the transaction by using a rollback() as the transaction is known * to be readOnly. * </p> */ 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. */ <A> List<A> findIds(); /** * Execute the find returning a QueryIterator and visitor pattern. */ void findEach(Consumer<T> consumer); /** * Execute the find returning a QueryIterator and visitor pattern. */ void findEachWhile(Predicate<T> consumer); /** * Execute the find returning a QueryIterator. */ QueryIterator<T> findIterate(); /** * Execute the finVersions() query. */ List<Version<T>> findVersions(); /** * Execute the query as findList. */ List<T> findList(); /** * Execute the query as findSet. */ Set<?> findSet(); /** * Execute the query as findMap. */ Map<?, ?> findMap(); /** * Execute the findSingleAttributeList query. */ <A> List<A> findSingleAttributeList(); /** * Try to get the query result from the query cache. */ BeanCollection<T> getFromQueryCache(); /** * Return the Database platform like clause. */ String getDBLikeClause(); /** * 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(); }