Class AbstractSqlRepositoryOperations<RS,​PS,​Exc extends java.lang.Exception>

    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected AbstractSqlRepositoryOperations​(java.lang.String dataSourceName, ResultReader<RS,​java.lang.String> columnNameResultSetReader, ResultReader<RS,​java.lang.Integer> columnIndexResultSetReader, QueryStatement<PS,​java.lang.Integer> preparedStatementWriter, java.util.List<io.micronaut.http.codec.MediaTypeCodec> codecs, DateTimeProvider<java.lang.Object> dateTimeProvider, io.micronaut.data.model.runtime.RuntimeEntityRegistry runtimeEntityRegistry, io.micronaut.context.BeanContext beanContext, DataConversionService<?> conversionService, io.micronaut.data.model.runtime.AttributeConverterRegistry attributeConverterRegistry)
      Default constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      <E,​R>
      io.micronaut.data.model.runtime.StoredQuery<E,​R>
      decorate​(io.micronaut.aop.MethodInvocationContext<?,​?> context, io.micronaut.data.model.runtime.StoredQuery<E,​R> storedQuery)
      Decorate stored query.
      <E,​R>
      io.micronaut.data.model.runtime.PreparedQuery<E,​R>
      decorate​(io.micronaut.data.model.runtime.PreparedQuery<E,​R> preparedQuery)
      Decorate prepared query.
      protected <E,​R>
      SqlPreparedQuery<E,​R>
      getSqlPreparedQuery​(io.micronaut.data.model.runtime.PreparedQuery<E,​R> preparedQuery)  
      protected <E,​R>
      SqlStoredQuery<E,​R>
      getSqlStoredQuery​(io.micronaut.data.model.runtime.StoredQuery<E,​R> storedQuery)  
      protected boolean isSupportsBatchDelete​(io.micronaut.data.model.PersistentEntity persistentEntity, io.micronaut.data.model.query.builder.sql.Dialect dialect)
      Does supports batch for delete queries.
      protected boolean isSupportsBatchInsert​(io.micronaut.data.model.PersistentEntity persistentEntity, io.micronaut.data.model.query.builder.sql.Dialect dialect)
      Does supports batch for update queries.
      protected boolean isSupportsBatchUpdate​(io.micronaut.data.model.PersistentEntity persistentEntity, io.micronaut.data.model.query.builder.sql.Dialect dialect)
      Does supports batch for update queries.
      protected <T,​R>
      PS
      prepareStatement​(AbstractSqlRepositoryOperations.StatementSupplier<PS> statementFunction, io.micronaut.data.model.runtime.PreparedQuery<T,​R> preparedQuery, boolean isUpdate, boolean isSingleResult)
      Prepare a statement for execution.
      protected <T> java.lang.String resolveAssociationInsert​(java.lang.Class repositoryType, io.micronaut.data.model.runtime.RuntimePersistentEntity<T> persistentEntity, io.micronaut.data.model.runtime.RuntimeAssociation<T> association)
      Builds a join table insert.
      protected <E> SqlStoredQuery<E,​E> resolveEntityInsert​(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, java.lang.Class<?> repositoryType, java.lang.Class<E> rootEntity, io.micronaut.data.model.runtime.RuntimePersistentEntity<E> persistentEntity)
      Resolves a stored insert for the given entity.
      protected <E> SqlStoredQuery<E,​E> resolveEntityUpdate​(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata, java.lang.Class<?> repositoryType, java.lang.Class<E> rootEntity, io.micronaut.data.model.runtime.RuntimePersistentEntity<E> persistentEntity)
      Resolves a stored update for the given entity.
      protected <T> SqlStoredQuery<T,​?> resolveSqlInsertAssociation​(java.lang.Class<?> repositoryType, io.micronaut.data.model.runtime.RuntimeAssociation<T> association, io.micronaut.data.model.runtime.RuntimePersistentEntity<T> persistentEntity, T entity)
      Resolve SQL insert association operation.
      protected void setStatementParameter​(PS preparedStatement, int index, io.micronaut.data.model.DataType dataType, java.lang.Object value, io.micronaut.data.model.query.builder.sql.Dialect dialect)
      Set the parameter value on the given statement.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface io.micronaut.context.ApplicationContextProvider

        getApplicationContext
      • Methods inherited from interface io.micronaut.data.operations.HintsCapableRepository

        getQueryHints
    • Field Detail

      • QUERY_LOG

        protected static final org.slf4j.Logger QUERY_LOG
      • dataSourceName

        protected final java.lang.String dataSourceName
      • columnNameResultSetReader

        protected final ResultReader<RS,​java.lang.String> columnNameResultSetReader
      • columnIndexResultSetReader

        protected final ResultReader<RS,​java.lang.Integer> columnIndexResultSetReader
      • preparedStatementWriter

        protected final QueryStatement<PS,​java.lang.Integer> preparedStatementWriter
      • queryBuilders

        protected final java.util.Map<java.lang.Class,​io.micronaut.data.model.query.builder.sql.SqlQueryBuilder> queryBuilders
      • repositoriesWithHardcodedDataSource

        protected final java.util.Map<java.lang.Class,​java.lang.String> repositoriesWithHardcodedDataSource
    • Constructor Detail

      • AbstractSqlRepositoryOperations

        protected AbstractSqlRepositoryOperations​(java.lang.String dataSourceName,
                                                  ResultReader<RS,​java.lang.String> columnNameResultSetReader,
                                                  ResultReader<RS,​java.lang.Integer> columnIndexResultSetReader,
                                                  QueryStatement<PS,​java.lang.Integer> preparedStatementWriter,
                                                  java.util.List<io.micronaut.http.codec.MediaTypeCodec> codecs,
                                                  DateTimeProvider<java.lang.Object> dateTimeProvider,
                                                  io.micronaut.data.model.runtime.RuntimeEntityRegistry runtimeEntityRegistry,
                                                  io.micronaut.context.BeanContext beanContext,
                                                  DataConversionService<?> conversionService,
                                                  io.micronaut.data.model.runtime.AttributeConverterRegistry attributeConverterRegistry)
        Default constructor.
        Parameters:
        dataSourceName - The datasource name
        columnNameResultSetReader - The column name result reader
        columnIndexResultSetReader - The column index result reader
        preparedStatementWriter - The prepared statement writer
        codecs - The media type codecs
        dateTimeProvider - The date time provider
        runtimeEntityRegistry - The entity registry
        beanContext - The bean context
        conversionService - The conversion service
        attributeConverterRegistry - The attribute converter registry
    • Method Detail

      • decorate

        public <E,​R> io.micronaut.data.model.runtime.PreparedQuery<E,​R> decorate​(io.micronaut.data.model.runtime.PreparedQuery<E,​R> preparedQuery)
        Description copied from interface: PreparedQueryDecorator
        Decorate prepared query.
        Specified by:
        decorate in interface PreparedQueryDecorator
        Type Parameters:
        E - The entity type
        R - The result type
        Parameters:
        preparedQuery - The query to be decorated
        Returns:
        decorated prepared query
      • decorate

        public <E,​R> io.micronaut.data.model.runtime.StoredQuery<E,​R> decorate​(io.micronaut.aop.MethodInvocationContext<?,​?> context,
                                                                                           io.micronaut.data.model.runtime.StoredQuery<E,​R> storedQuery)
        Description copied from interface: MethodContextAwareStoredQueryDecorator
        Decorate stored query.
        Specified by:
        decorate in interface MethodContextAwareStoredQueryDecorator
        Type Parameters:
        E - The entity type
        R - The result type
        Parameters:
        context - The context
        storedQuery - The query to be decorated
        Returns:
        decorated stored query
      • prepareStatement

        protected <T,​R> PS prepareStatement​(AbstractSqlRepositoryOperations.StatementSupplier<PS> statementFunction,
                                                  @NonNull
                                                  io.micronaut.data.model.runtime.PreparedQuery<T,​R> preparedQuery,
                                                  boolean isUpdate,
                                                  boolean isSingleResult)
                                           throws Exc extends java.lang.Exception
        Prepare a statement for execution.
        Type Parameters:
        T - The query declaring type
        R - The query result type
        Parameters:
        statementFunction - The statement function
        preparedQuery - The prepared query
        isUpdate - Is this an update
        isSingleResult - Is it a single result
        Returns:
        The prepared statement
        Throws:
        Exc extends java.lang.Exception
      • setStatementParameter

        protected void setStatementParameter​(PS preparedStatement,
                                             int index,
                                             io.micronaut.data.model.DataType dataType,
                                             java.lang.Object value,
                                             io.micronaut.data.model.query.builder.sql.Dialect dialect)
        Set the parameter value on the given statement.
        Parameters:
        preparedStatement - The prepared statement
        index - The index
        dataType - The data type
        value - The value
        dialect - The dialect
      • resolveEntityInsert

        @NonNull
        protected <E> SqlStoredQuery<E,​E> resolveEntityInsert​(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata,
                                                                    java.lang.Class<?> repositoryType,
                                                                    @NonNull
                                                                    java.lang.Class<E> rootEntity,
                                                                    @NonNull
                                                                    io.micronaut.data.model.runtime.RuntimePersistentEntity<E> persistentEntity)
        Resolves a stored insert for the given entity.
        Type Parameters:
        E - The entity type
        Parameters:
        annotationMetadata - The repository annotation metadata
        repositoryType - The repository type
        rootEntity - The root entity
        persistentEntity - The persistent entity
        Returns:
        The insert
      • resolveAssociationInsert

        protected <T> java.lang.String resolveAssociationInsert​(java.lang.Class repositoryType,
                                                                io.micronaut.data.model.runtime.RuntimePersistentEntity<T> persistentEntity,
                                                                io.micronaut.data.model.runtime.RuntimeAssociation<T> association)
        Builds a join table insert.
        Type Parameters:
        T - The entity generic type
        Parameters:
        repositoryType - The repository type
        persistentEntity - The entity
        association - The association
        Returns:
        The insert statement
      • resolveEntityUpdate

        @NonNull
        protected <E> SqlStoredQuery<E,​E> resolveEntityUpdate​(io.micronaut.core.annotation.AnnotationMetadata annotationMetadata,
                                                                    java.lang.Class<?> repositoryType,
                                                                    @NonNull
                                                                    java.lang.Class<E> rootEntity,
                                                                    @NonNull
                                                                    io.micronaut.data.model.runtime.RuntimePersistentEntity<E> persistentEntity)
        Resolves a stored update for the given entity.
        Type Parameters:
        E - The entity type
        Parameters:
        annotationMetadata - The repository annotation metadata
        repositoryType - The repository type
        rootEntity - The root entity
        persistentEntity - The persistent entity
        Returns:
        The insert
      • resolveSqlInsertAssociation

        protected <T> SqlStoredQuery<T,​?> resolveSqlInsertAssociation​(java.lang.Class<?> repositoryType,
                                                                            io.micronaut.data.model.runtime.RuntimeAssociation<T> association,
                                                                            io.micronaut.data.model.runtime.RuntimePersistentEntity<T> persistentEntity,
                                                                            T entity)
        Resolve SQL insert association operation.
        Type Parameters:
        T - The entity type
        Parameters:
        repositoryType - The repository type
        association - The association
        persistentEntity - The persistent entity
        entity - The entity
        Returns:
        The operation
      • getSqlPreparedQuery

        protected final <E,​R> SqlPreparedQuery<E,​R> getSqlPreparedQuery​(io.micronaut.data.model.runtime.PreparedQuery<E,​R> preparedQuery)
      • getSqlStoredQuery

        protected final <E,​R> SqlStoredQuery<E,​R> getSqlStoredQuery​(io.micronaut.data.model.runtime.StoredQuery<E,​R> storedQuery)
      • isSupportsBatchInsert

        protected boolean isSupportsBatchInsert​(io.micronaut.data.model.PersistentEntity persistentEntity,
                                                io.micronaut.data.model.query.builder.sql.Dialect dialect)
        Does supports batch for update queries.
        Parameters:
        persistentEntity - The persistent entity
        dialect - The dialect
        Returns:
        true if supported
      • isSupportsBatchUpdate

        protected boolean isSupportsBatchUpdate​(io.micronaut.data.model.PersistentEntity persistentEntity,
                                                io.micronaut.data.model.query.builder.sql.Dialect dialect)
        Does supports batch for update queries.
        Parameters:
        persistentEntity - The persistent entity
        dialect - The dialect
        Returns:
        true if supported
      • isSupportsBatchDelete

        protected boolean isSupportsBatchDelete​(io.micronaut.data.model.PersistentEntity persistentEntity,
                                                io.micronaut.data.model.query.builder.sql.Dialect dialect)
        Does supports batch for delete queries.
        Parameters:
        persistentEntity - The persistent entity
        dialect - The dialect
        Returns:
        true if supported