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 Summary
FieldsModifier and TypeFieldDescriptionprotected final com.blazebit.persistence.view.EntityViewManager -
Constructor Summary
ConstructorsConstructorDescriptionAbstractPartTreeBlazePersistenceQuery(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 Summary
Modifier and TypeMethodDescriptionprotected abstract ParameterBindercreateCriteriaQueryParameterBinder(JpaParameters parameters, Object[] values, List<ParameterMetadataProvider.ParameterMetadata<?>> expressions) jakarta.persistence.QuerycreatePaginatedQuery(Object[] values, boolean withCount) protected abstract ParameterMetadataProvidercreateParameterMetadataProvider(jakarta.persistence.criteria.CriteriaBuilder builder, JpaParameters parameters, org.springframework.data.jpa.provider.PersistenceProvider provider, Object escape) protected abstract ParameterMetadataProvidercreateParameterMetadataProvider(jakarta.persistence.criteria.CriteriaBuilder builder, org.springframework.data.repository.query.ParametersParameterAccessor accessor, org.springframework.data.jpa.provider.PersistenceProvider provider, Object escape) jakarta.persistence.TypedQuery<Long>doCreateCountQuery(Object[] values) jakarta.persistence.QuerydoCreateQuery(Object[] values) protected abstract intgetLimit(org.springframework.data.domain.Pageable pageable) protected abstract intgetOffset(org.springframework.data.domain.Pageable pageable) protected abstract booleanisCountProjection(org.springframework.data.repository.query.parser.PartTree tree) protected booleanisDelete()protected abstract booleanisDelete(org.springframework.data.repository.query.parser.PartTree tree) protected booleanisExists()protected abstract booleanisExists(org.springframework.data.repository.query.parser.PartTree tree) tryGetFetchGraphHints(org.springframework.data.jpa.repository.query.JpaEntityGraph entityGraph, Class<?> entityType) Methods inherited from class org.springframework.data.jpa.repository.query.AbstractJpaQuery
applyHints, applyQueryHint, createBinder, createCountQuery, createQuery, doCreateCountQuery, doCreateQuery, execute, getEntityManager, getExecution, getMetamodel, getQueryMethod, getTypeToRead
-
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
-
doCreateQuery
-
createPaginatedQuery
-
doCreateCountQuery
-