Class JpaQueryBuilder2
java.lang.Object
io.micronaut.data.model.query.builder.sql.AbstractSqlLikeQueryBuilder2
io.micronaut.data.model.query.builder.jpa.JpaQueryBuilder2
- All Implemented Interfaces:
QueryBuilder2
Builds JPA 1.0 String-based queries from the Query model.
- Since:
- 1.0
- Author:
- Graeme Rocher, Denis Stepanov
-
Nested Class Summary
Nested classes/interfaces inherited from class io.micronaut.data.model.query.builder.sql.AbstractSqlLikeQueryBuilder2
AbstractSqlLikeQueryBuilder2.ExpressionAppender, AbstractSqlLikeQueryBuilder2.Placeholder, AbstractSqlLikeQueryBuilder2.QueryBuilder, AbstractSqlLikeQueryBuilder2.QueryPosition, AbstractSqlLikeQueryBuilder2.QueryPropertyPath, AbstractSqlLikeQueryBuilder2.QueryState, AbstractSqlLikeQueryBuilder2.SqlPredicateVisitor, AbstractSqlLikeQueryBuilder2.SqlSelectionVisitorNested classes/interfaces inherited from interface io.micronaut.data.model.query.builder.QueryBuilder2
QueryBuilder2.BaseQueryDefinition, QueryBuilder2.DeleteQueryDefinition, QueryBuilder2.InsertQueryDefinition, QueryBuilder2.SelectQueryDefinition, QueryBuilder2.UpdateQueryDefinition -
Field Summary
Fields inherited from class io.micronaut.data.model.query.builder.sql.AbstractSqlLikeQueryBuilder2
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
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected @NonNull StringBuilderappendDeleteClause(StringBuilder queryString) Append the delete clause.protected voidappendLimitAndOffset(Dialect dialect, long limit, long offset, StringBuilder builder) Append limit and offset.protected voidappendLimitAndOrder(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, QueryBuilder2.SelectQueryDefinition definition, boolean appendLimit, boolean appendOrder, AbstractSqlLikeQueryBuilder2.QueryState queryState) protected StringbuildAdditionalWhereClause(AbstractSqlLikeQueryBuilder2.QueryState queryState, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata) Builds additional where clause if there isWhereannotation on the entity.buildInsert(io.micronaut.core.annotation.AnnotationMetadata repositoryMetadata, QueryBuilder2.InsertQueryDefinition definition) Builds an insert statement for the given entity.protected voidbuildJoin(String joinType, StringBuilder query, AbstractSqlLikeQueryBuilder2.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.protected booleanWhether property path expressions require computation by the implementation.createSelectionVisitor(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, AbstractSqlLikeQueryBuilder2.QueryState queryState, boolean distinct) Create a selection visitor.protected AbstractSqlLikeQueryBuilder2.PlaceholderformatParameter(int index) Format the parameter at the given index.getAliasName(PersistentEntity entity) Get an alias name for the given entity.protected StringgetColumnName(PersistentProperty persistentProperty) Get the column name for the given property.protected NamingStrategygetNamingStrategy(PersistentEntity entity) GetsNamingStrategyfor the entity.protected NamingStrategygetNamingStrategy(PersistentPropertyPath propertyPath) GetsNamingStrategyfor the property path.protected StringgetTableName(PersistentEntity entity) Get the table name for the given entity.protected booleanisAliasForBatch(PersistentEntity persistentEntity, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata) Should aliases be used in batch statements.protected StringQuote a column name for the dialect.Resolves the join type.protected booleanshouldAppendOrder(QueryBuilder2.SelectQueryDefinition definition) Should append order.protected booleanMethods inherited from class io.micronaut.data.model.query.builder.sql.AbstractSqlLikeQueryBuilder2
appendExpression, appendForUpdate, appendOrder, appendPropertyRef, appendTransformed, appendUpdateSetParameter, asLiteral, asPath, asQueryPropertyPath, buildAdditionalWhereString, buildAdditionalWhereString, buildDelete, buildOrderBy, buildPropertyByName, buildQuery, buildSelect, buildSelect, buildUpdate, buildWhereClause, checkDialectSupportsJsonEntity, createPredicateVisitor, getAliasName, getColumnAlias, getDataTransformerReadValue, getDataTransformerWriteValue, getDialect, getMappedName, getMappedName, getMappedName, getPathOnlyAliasName, getTableAsKeyword, getUnescapedTableName, isJsonEntity, newBindingContext, parameterInRoleModifiesLimit, parameterInRoleModifiesOrder, quote, resolveWhereForAnnotationMetadata, shouldEscape, traverseEmbedded
-
Constructor Details
-
JpaQueryBuilder2
public JpaQueryBuilder2()Default constructor.
-
-
Method Details
-
quote
Description copied from class:AbstractSqlLikeQueryBuilder2Quote a column name for the dialect.- Overrides:
quotein classAbstractSqlLikeQueryBuilder2- Parameters:
persistedName- The persisted name.- Returns:
- The quoted name
-
getAliasName
Description copied from class:AbstractSqlLikeQueryBuilder2Get an alias name for the given entity.- Overrides:
getAliasNamein classAbstractSqlLikeQueryBuilder2- Parameters:
entity- The entity- Returns:
- The alias name
-
buildJoin
protected void buildJoin(String joinType, StringBuilder query, AbstractSqlLikeQueryBuilder2.QueryState queryState, PersistentAssociationPath joinAssociation, PersistentEntity associationOwner, String currentJoinAlias, String lastJoinAlias) Description copied from class:AbstractSqlLikeQueryBuilder2Build a join expression for the given alias, association, join type and builder.- Overrides:
buildJoinin classAbstractSqlLikeQueryBuilder2- Parameters:
joinType- The join typequery- The query builderqueryState- The statejoinAssociation- The associationassociationOwner- The associated ownercurrentJoinAlias- The current join aliaslastJoinAlias- The last join alias
-
buildAdditionalWhereClause
protected String buildAdditionalWhereClause(AbstractSqlLikeQueryBuilder2.QueryState queryState, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata) Description copied from class:AbstractSqlLikeQueryBuilder2Builds additional where clause if there isWhereannotation on the entity.- Overrides:
buildAdditionalWhereClausein classAbstractSqlLikeQueryBuilder2- Parameters:
queryState- the query stateannotationMetadata- the annotation metadata- Returns:
- where clause if there was
Whereannotation on the entity (or joins for JPA implementation)
-
getTableName
Description copied from class:AbstractSqlLikeQueryBuilder2Get the table name for the given entity.- Specified by:
getTableNamein classAbstractSqlLikeQueryBuilder2- Parameters:
entity- The entity- Returns:
- The table name
-
getColumnName
Description copied from class:AbstractSqlLikeQueryBuilder2Get the column name for the given property.- Specified by:
getColumnNamein classAbstractSqlLikeQueryBuilder2- Parameters:
persistentProperty- The property- Returns:
- The column name
-
createSelectionVisitor
protected AbstractSqlLikeQueryBuilder2.SqlSelectionVisitor createSelectionVisitor(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, AbstractSqlLikeQueryBuilder2.QueryState queryState, boolean distinct) Description copied from class:AbstractSqlLikeQueryBuilder2Create a selection visitor.- Overrides:
createSelectionVisitorin classAbstractSqlLikeQueryBuilder2- Parameters:
annotationMetadata- The annotation metadataqueryState- The query statedistinct- The distinct- Returns:
- The visitor
-
computePropertyPaths
protected boolean computePropertyPaths()Description copied from class:AbstractSqlLikeQueryBuilder2Whether 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.- Specified by:
computePropertyPathsin classAbstractSqlLikeQueryBuilder2- Returns:
- True if property path computation is required.
-
isAliasForBatch
protected boolean isAliasForBatch(PersistentEntity persistentEntity, io.micronaut.core.annotation.AnnotationMetadata annotationMetadata) Description copied from class:AbstractSqlLikeQueryBuilder2Should aliases be used in batch statements.- Specified by:
isAliasForBatchin classAbstractSqlLikeQueryBuilder2- Parameters:
persistentEntity- the persistent entityannotationMetadata- the method annotation metadata- Returns:
- True if they should
-
formatParameter
Description copied from class:AbstractSqlLikeQueryBuilder2Format the parameter at the given index.- Specified by:
formatParameterin classAbstractSqlLikeQueryBuilder2- Parameters:
index- The parameter- Returns:
- The index
-
resolveJoinType
Description copied from class:AbstractSqlLikeQueryBuilder2Resolves the join type.- Specified by:
resolveJoinTypein classAbstractSqlLikeQueryBuilder2- Parameters:
jt- The join type- Returns:
- The join type.
-
buildInsert
public QueryResult buildInsert(io.micronaut.core.annotation.AnnotationMetadata repositoryMetadata, QueryBuilder2.InsertQueryDefinition definition) Description copied from interface:QueryBuilder2Builds an insert statement for the given entity.- Parameters:
repositoryMetadata- The repository annotation metadatadefinition- The definition- Returns:
- The insert statement or null if the implementation doesn't require insert statements
-
appendDeleteClause
Description copied from class:AbstractSqlLikeQueryBuilder2Append the delete clause.- Overrides:
appendDeleteClausein classAbstractSqlLikeQueryBuilder2- Parameters:
queryString- The query string- Returns:
- The delete clause
-
buildLimitAndOffset
Description copied from interface:QueryBuilder2Generate the limit and offset query.- Specified by:
buildLimitAndOffsetin interfaceQueryBuilder2- Overrides:
buildLimitAndOffsetin classAbstractSqlLikeQueryBuilder2- Parameters:
limit- The limit (-1 of not set)offset- The offset (0 if not set)- Returns:
- The encoded query
-
appendLimitAndOffset
protected void appendLimitAndOffset(Dialect dialect, long limit, long offset, StringBuilder builder) Description copied from class:AbstractSqlLikeQueryBuilder2Append limit and offset.- Overrides:
appendLimitAndOffsetin classAbstractSqlLikeQueryBuilder2- Parameters:
dialect- The dialectlimit- The limitoffset- The offsetbuilder- The builder
-
supportsLimitQuery
protected boolean supportsLimitQuery()- Overrides:
supportsLimitQueryin classAbstractSqlLikeQueryBuilder2- Returns:
- True if limit is supported in the query
-
appendLimitAndOrder
protected void appendLimitAndOrder(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, QueryBuilder2.SelectQueryDefinition definition, boolean appendLimit, boolean appendOrder, AbstractSqlLikeQueryBuilder2.QueryState queryState) - Overrides:
appendLimitAndOrderin classAbstractSqlLikeQueryBuilder2
-
shouldAppendOrder
Description copied from class:AbstractSqlLikeQueryBuilder2Should append order.- Overrides:
shouldAppendOrderin classAbstractSqlLikeQueryBuilder2- Parameters:
definition- The definition- Returns:
- true if should
-
getNamingStrategy
Description copied from class:AbstractSqlLikeQueryBuilder2GetsNamingStrategyfor the entity. Subclasses might override and potentially provide different strategy in some cases.- Overrides:
getNamingStrategyin classAbstractSqlLikeQueryBuilder2- Parameters:
entity- the persistent entity- Returns:
- naming strategy for the entity
-
getNamingStrategy
Description copied from class:AbstractSqlLikeQueryBuilder2GetsNamingStrategyfor the property path. Subclasses might override and potentially provide different strategy in some cases.- Overrides:
getNamingStrategyin classAbstractSqlLikeQueryBuilder2- Parameters:
propertyPath- the property path representation- Returns:
- naming strategy for the property path
-