Class AbstractPartTreeBlazePersistenceQuery

java.lang.Object
org.springframework.data.jpa.repository.query.AbstractJpaQuery
com.blazebit.persistence.spring.data.base.query.AbstractPartTreeBlazePersistenceQuery
All Implemented Interfaces:
org.springframework.data.repository.query.RepositoryQuery

public abstract class AbstractPartTreeBlazePersistenceQuery extends org.springframework.data.jpa.repository.query.AbstractJpaQuery
Implementation is similar to PartTreeJpaQuery but was modified to work with entity views. About sorting The implementation of both AbstractPartTreeBlazePersistenceQuery and AbstractEntityViewAwareRepository aims to support mixed sorting, i.e. sorting by entity view attributes and entity attributes at the same time. To make this work we abstain from using the attribute sorter API of EntityViewSetting because it would not allow us to add the entity attribute sorts. Instead, we add both entity view attribute and entity attribute sorters uniformly via the core order API of OrderByBuilder *after* the entity view settings have been applied: - For entity view attribute sorts we resolve deterministic aliases from the order property that correspond to the select item aliases - For entity attribute sorts we just use the order property as is Sorters are retrieved from 4 sources. The order these sources are applied to the final query is as follows: 1. method name sorters e.g. findAllByOrderByNameAsc() 2./3. Pageable or Sort method parameter 4. EntityViewSettingProcessor method parameter that adds attribute sorters to the entity view settings
Since:
1.6.9
Author:
Moritz Becker, Christian Beikov, Eugen Mayer
  • Field Details

    • evm

      protected final com.blazebit.persistence.view.EntityViewManager evm
  • Constructor Details

    • AbstractPartTreeBlazePersistenceQuery

      public AbstractPartTreeBlazePersistenceQuery(EntityViewAwareJpaQueryMethod method, jakarta.persistence.EntityManager em, org.springframework.data.jpa.provider.PersistenceProvider persistenceProvider, Object escape, com.blazebit.persistence.CriteriaBuilderFactory cbf, com.blazebit.persistence.view.EntityViewManager evm)
  • Method Details

    • createParameterMetadataProvider

      protected abstract ParameterMetadataProvider createParameterMetadataProvider(jakarta.persistence.criteria.CriteriaBuilder builder, org.springframework.data.repository.query.ParametersParameterAccessor accessor, org.springframework.data.jpa.provider.PersistenceProvider provider, Object escape)
    • createParameterMetadataProvider

      protected abstract ParameterMetadataProvider createParameterMetadataProvider(jakarta.persistence.criteria.CriteriaBuilder builder, JpaParameters parameters, org.springframework.data.jpa.provider.PersistenceProvider provider, Object escape)
    • isCountProjection

      protected abstract boolean isCountProjection(org.springframework.data.repository.query.parser.PartTree tree)
    • isDelete

      protected boolean isDelete()
    • isExists

      protected boolean isExists()
    • isDelete

      protected abstract boolean isDelete(org.springframework.data.repository.query.parser.PartTree tree)
    • isExists

      protected abstract boolean isExists(org.springframework.data.repository.query.parser.PartTree tree)
    • getOffset

      protected abstract int getOffset(org.springframework.data.domain.Pageable pageable)
    • getLimit

      protected abstract int getLimit(org.springframework.data.domain.Pageable pageable)
    • createCriteriaQueryParameterBinder

      protected abstract ParameterBinder createCriteriaQueryParameterBinder(JpaParameters parameters, Object[] values, List<ParameterMetadataProvider.ParameterMetadata<?>> expressions)
    • tryGetFetchGraphHints

      protected abstract Map<String,Object> tryGetFetchGraphHints(org.springframework.data.jpa.repository.query.JpaEntityGraph entityGraph, Class<?> entityType)
    • doCreateQuery

      public jakarta.persistence.Query doCreateQuery(Object[] values)
    • createPaginatedQuery

      public jakarta.persistence.Query createPaginatedQuery(Object[] values, boolean withCount)
    • doCreateCountQuery

      public jakarta.persistence.TypedQuery<Long> doCreateCountQuery(Object[] values)