Class CosmosSqlQueryBuilder
java.lang.Object
io.micronaut.data.model.query.builder.sql.AbstractSqlLikeQueryBuilder
io.micronaut.data.model.query.builder.sql.SqlQueryBuilder
io.micronaut.data.document.model.query.builder.CosmosSqlQueryBuilder
- All Implemented Interfaces:
QueryBuilder
The Azure Cosmos DB sql query builder.
- Since:
- 3.9.0
- Author:
- radovanradic
-
Nested Class Summary
Nested classes/interfaces inherited from class io.micronaut.data.model.query.builder.sql.SqlQueryBuilder
SqlQueryBuilder.SqlSelectionVisitorNested classes/interfaces inherited from class io.micronaut.data.model.query.builder.sql.AbstractSqlLikeQueryBuilder
AbstractSqlLikeQueryBuilder.ExpressionAppender, AbstractSqlLikeQueryBuilder.Placeholder, AbstractSqlLikeQueryBuilder.QueryBuilder, AbstractSqlLikeQueryBuilder.QueryPosition, AbstractSqlLikeQueryBuilder.QueryPropertyPath, AbstractSqlLikeQueryBuilder.QueryState, AbstractSqlLikeQueryBuilder.SqlPredicateVisitorNested classes/interfaces inherited from interface io.micronaut.data.model.query.builder.QueryBuilder
QueryBuilder.BaseQueryDefinition, QueryBuilder.DeleteQueryDefinition, QueryBuilder.InsertQueryDefinition, QueryBuilder.SelectQueryDefinition, QueryBuilder.UpdateQueryDefinition -
Field Summary
Fields inherited from class io.micronaut.data.model.query.builder.sql.SqlQueryBuilder
DEFAULT_POSITIONAL_PARAMETER_MARKER, SQL_SERVER_FOR_UPDATE_CLAUSE, STANDARD_FOR_UPDATE_CLAUSEFields inherited from class io.micronaut.data.model.query.builder.sql.AbstractSqlLikeQueryBuilder
ALIAS_REPLACE_QUOTED, AND, AS_CLAUSE, CANNOT_QUERY_ON_ID_WITH_ENTITY_THAT_HAS_NO_ID, CLOSE_BRACKET, COMMA, DISTINCT, DOT, FROM_CLAUSE, LOGICAL_AND, LOGICAL_OR, NOT, OPEN_BRACKET, OR, ORDER_BY_CLAUSE, RETURNING, SELECT_CLAUSE, SPACE, WHERE_CLAUSE -
Constructor Summary
ConstructorsConstructorDescriptionCosmosSqlQueryBuilder(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata) -
Method Summary
Modifier and TypeMethodDescriptionprotected StringBuilderappendDeleteClause(StringBuilder queryString) Append the delete clause.protected StringConvert the literal value to it's SQL representation.buildInsert(io.micronaut.core.annotation.AnnotationMetadata repositoryMetadata, QueryBuilder.InsertQueryDefinition definition) Builds an insert statement for the given entity.protected voidbuildJoin(String joinType, StringBuilder query, AbstractSqlLikeQueryBuilder.QueryState queryState, PersistentAssociationPath joinAssociation, PersistentEntity associationOwner, String currentJoinAlias, String lastJoinAlias) Build a join expression for the given alias, association, join type and builder.buildLimitAndOffset(long limit, long offset) Generate the limit and offset query.buildSelect(@NonNull io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, @NonNull QueryBuilder.SelectQueryDefinition definition) Encode the given query for the passed annotation metadata and query.buildUpdate(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, QueryBuilder.UpdateQueryDefinition definition) Encode the given query into the encoded query instance.protected booleanWhether property path expressions require computation by the implementation.createPredicateVisitor(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, AbstractSqlLikeQueryBuilder.QueryState queryState) Create a predicate visitor.protected SqlQueryBuilder.SqlSelectionVisitorcreateSelectionVisitor(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, AbstractSqlLikeQueryBuilder.QueryState queryState, boolean distinct) Create a selection visitor.protected NamingStrategygetNamingStrategy(PersistentEntity entity) GetsNamingStrategyfor the entity.protected NamingStrategygetNamingStrategy(PersistentPropertyPath propertyPath) GetsNamingStrategyfor the property path.protected booleanisAliasForBatch(PersistentEntity persistentEntity, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata) Should aliases be used in batch statements.protected booleanMethods inherited from class io.micronaut.data.model.query.builder.sql.SqlQueryBuilder
appendForUpdate, appendLimitAndOrder, appendUpdateSetParameter, buildBatchCreateTableStatement, buildBatchDropTableStatement, buildCreateTableStatements, buildCreateTableStatements, buildDropTableStatements, buildJoinTableInsert, formatParameter, getAliasName, getColumnName, getDialect, getTableAsKeyword, getTableName, isForeignKeyWithJoinTable, positionalParameterFormat, quote, resolveJoinType, selectAutoStrategy, shouldEscapeMethods inherited from class io.micronaut.data.model.query.builder.sql.AbstractSqlLikeQueryBuilder
appendExpression, appendLimitAndOffset, appendOrder, appendPropertyRef, appendTransformed, asPath, asQueryPropertyPath, buildAdditionalWhereClause, buildAdditionalWhereString, buildAdditionalWhereString, buildDelete, buildOrderBy, buildPropertyByName, buildQuery, buildSelect, buildWhereClause, checkDialectSupportsJsonEntity, getAliasName, getColumnAlias, getDataTransformerReadValue, getDataTransformerWriteValue, getMappedName, getMappedName, getMappedName, getPathOnlyAliasName, getUnescapedTableName, isJsonEntity, newBindingContext, parameterInRoleModifiesLimit, parameterInRoleModifiesOrder, quote, resolveWhereForAnnotationMetadata, shouldAppendOrder, supportsLimitQuery
-
Constructor Details
-
CosmosSqlQueryBuilder
@Creator public CosmosSqlQueryBuilder(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata)
-
-
Method Details
-
asLiteral
Description copied from class:AbstractSqlLikeQueryBuilderConvert the literal value to it's SQL representation.- Overrides:
asLiteralin classSqlQueryBuilder- Parameters:
value- The literal value- Returns:
- converter value
-
traverseEmbedded
protected boolean traverseEmbedded()- Overrides:
traverseEmbeddedin classAbstractSqlLikeQueryBuilder- Returns:
- True if embedded properties should be traversed
-
createSelectionVisitor
protected SqlQueryBuilder.SqlSelectionVisitor createSelectionVisitor(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, AbstractSqlLikeQueryBuilder.QueryState queryState, boolean distinct) Description copied from class:AbstractSqlLikeQueryBuilderCreate a selection visitor.- Overrides:
createSelectionVisitorin classSqlQueryBuilder- Parameters:
annotationMetadata- The annotation metadataqueryState- The query statedistinct- The distinct- Returns:
- The visitor
-
createPredicateVisitor
protected AbstractSqlLikeQueryBuilder.SqlPredicateVisitor createPredicateVisitor(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, AbstractSqlLikeQueryBuilder.QueryState queryState) Description copied from class:AbstractSqlLikeQueryBuilderCreate a predicate visitor.- Overrides:
createPredicateVisitorin classAbstractSqlLikeQueryBuilder- Parameters:
annotationMetadata- The annotation metadataqueryState- The query state- Returns:
- The visitor
-
getNamingStrategy
Description copied from class:AbstractSqlLikeQueryBuilderGetsNamingStrategyfor the entity. Subclasses might override and potentially provide different strategy in some cases.- Overrides:
getNamingStrategyin classAbstractSqlLikeQueryBuilder- Parameters:
entity- the persistent entity- Returns:
- naming strategy for the entity
-
getNamingStrategy
Description copied from class:AbstractSqlLikeQueryBuilderGetsNamingStrategyfor the property path. Subclasses might override and potentially provide different strategy in some cases.- Overrides:
getNamingStrategyin classAbstractSqlLikeQueryBuilder- Parameters:
propertyPath- the property path representation- Returns:
- naming strategy for the property path
-
buildSelect
public QueryResult buildSelect(@NonNull @NonNull io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, @NonNull @NonNull QueryBuilder.SelectQueryDefinition definition) Description copied from interface:QueryBuilderEncode the given query for the passed annotation metadata and query.- Specified by:
buildSelectin interfaceQueryBuilder- Overrides:
buildSelectin classAbstractSqlLikeQueryBuilder- Parameters:
annotationMetadata- The annotation metadatadefinition- The query model- Returns:
- The query result
-
buildJoin
protected void buildJoin(String joinType, StringBuilder query, AbstractSqlLikeQueryBuilder.QueryState queryState, PersistentAssociationPath joinAssociation, PersistentEntity associationOwner, String currentJoinAlias, String lastJoinAlias) Description copied from class:AbstractSqlLikeQueryBuilderBuild a join expression for the given alias, association, join type and builder.- Overrides:
buildJoinin classSqlQueryBuilder- Parameters:
joinType- The join typequery- The query builderqueryState- The statejoinAssociation- The associationassociationOwner- The associated ownercurrentJoinAlias- The current join aliaslastJoinAlias- The last join alias
-
appendDeleteClause
Description copied from class:AbstractSqlLikeQueryBuilderAppend the delete clause.- Overrides:
appendDeleteClausein classAbstractSqlLikeQueryBuilder- Parameters:
queryString- The query string- Returns:
- The delete clause
-
isAliasForBatch
protected boolean isAliasForBatch(PersistentEntity persistentEntity, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata) Description copied from class:AbstractSqlLikeQueryBuilderShould aliases be used in batch statements.- Overrides:
isAliasForBatchin classSqlQueryBuilder- Parameters:
persistentEntity- the persistent entityannotationMetadata- the method annotation metadata- Returns:
- True if they should
-
computePropertyPaths
protected boolean computePropertyPaths()Description copied from class:AbstractSqlLikeQueryBuilderWhether property path expressions require computation by the implementation. In a certain query dialects property paths are supported (such as JPA-QL where you can do select foo.bar) whilst for explicit SQL queries paths like this have to be computed into aliases / column name references.- Overrides:
computePropertyPathsin classSqlQueryBuilder- Returns:
- True if property path computation is required.
-
buildInsert
public QueryResult buildInsert(io.micronaut.core.annotation.AnnotationMetadata repositoryMetadata, QueryBuilder.InsertQueryDefinition definition) Description copied from interface:QueryBuilderBuilds an insert statement for the given entity.- Specified by:
buildInsertin interfaceQueryBuilder- Overrides:
buildInsertin classSqlQueryBuilder- Parameters:
repositoryMetadata- The repository annotation metadatadefinition- The definition- Returns:
- The insert statement or null if the implementation doesn't require insert statements
-
buildUpdate
public QueryResult buildUpdate(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, QueryBuilder.UpdateQueryDefinition definition) Description copied from interface:QueryBuilderEncode the given query into the encoded query instance.- Specified by:
buildUpdatein interfaceQueryBuilder- Overrides:
buildUpdatein classAbstractSqlLikeQueryBuilder- Parameters:
annotationMetadata- The annotation metadatadefinition- The definition- Returns:
- The encoded query
-
buildLimitAndOffset
Description copied from interface:QueryBuilderGenerate the limit and offset query.- Specified by:
buildLimitAndOffsetin interfaceQueryBuilder- Overrides:
buildLimitAndOffsetin classAbstractSqlLikeQueryBuilder- Parameters:
limit- The limit (-1 of not set)offset- The offset (0 if not set)- Returns:
- The encoded query
-