Class SearchQueryBuilder
java.lang.Object
ca.uhn.fhir.jpa.search.builder.sql.SearchQueryBuilder
-
Constructor Summary
ConstructorsConstructorDescriptionSearchQueryBuilder
(ca.uhn.fhir.context.FhirContext theFhirContext, ModelConfig theModelConfig, PartitionSettings thePartitionSettings, ca.uhn.fhir.interceptor.model.RequestPartitionId theRequestPartitionId, String theResourceType, SqlObjectFactory theSqlBuilderFactory, HibernatePropertiesProvider theDialectProvider, boolean theCountQuery) Constructor -
Method Summary
Modifier and TypeMethodDescriptionAdd and return a predicate builder (or a root query if no root query exists yet) for selecting on a Composite Unique search parameterAdd and return a predicate builder (or a root query if no root query exists yet) for selecting on a Composite Unique search parameteraddCoordsPredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a COORDS search parameteraddDatePredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a DATE search parameteraddForcedIdPredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder for selecting a forced ID.void
addJoin
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbTable theFromTable, com.healthmarketscience.sqlbuilder.dbspec.basic.DbTable theToTable, com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theFromColumn, com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theToColumn) addNumberPredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a NUMBER search parametervoid
addPredicate
(com.healthmarketscience.sqlbuilder.Condition theCondition) com.healthmarketscience.sqlbuilder.ComboCondition
addPredicateLastUpdated
(ca.uhn.fhir.rest.param.DateRangeParam theDateRange) addQuantityNormalizedPredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) addQuantityPredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a QUANTITY search parameteraddReferencePredicateBuilder
(QueryStack theQueryStack, com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a REFERENCE search parameteraddReferencePredicateBuilderReversed
(QueryStack theQueryStack, com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a reosource link where the source and target are reversed.void
addResourceIdsPredicate
(List<Long> thePidList) addResourceTablePredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a QUANTITY search parameteraddSearchParamPresentPredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a:missing
search parametervoid
addSortDate
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theColumnValueNormalized, boolean theAscending) void
addSortDate
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theTheColumnValueNormalized, boolean theTheAscending, com.healthmarketscience.sqlbuilder.OrderObject.NullOrder theNullOrder) void
addSortNumeric
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theColumnValueNormalized, boolean theAscending) void
addSortNumeric
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theTheColumnValueNormalized, boolean theTheAscending, com.healthmarketscience.sqlbuilder.OrderObject.NullOrder theNullOrder) void
addSortString
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theColumnValueNormalized, boolean theAscending) void
addSortString
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theTheColumnValueNormalized, boolean theTheAscending, com.healthmarketscience.sqlbuilder.OrderObject.NullOrder theNullOrder) addSourcePredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a_source
search parameteraddStringPredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a STRING search parametercom.healthmarketscience.sqlbuilder.dbspec.basic.DbTable
addTagPredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a_tag
search parameteraddTokenPredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a TOKEN search parameteraddUriPredicateBuilder
(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a URI search parameterint
bindOffsetParameter
(List<Object> theBindVariables, Integer theOffset, org.hibernate.dialect.pagination.AbstractLimitHandler theLimitHandler, int theStartOfQueryParameterIndex, boolean theBindLimitParametersFirst) int
com.healthmarketscience.sqlbuilder.BinaryCondition
createConditionForValueWithComparator
(ca.uhn.fhir.rest.param.ParamPrefixEnum theComparator, com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theColumn, Object theValue) void
excludeResourceIdsPredicate
(Set<ca.uhn.fhir.rest.api.server.storage.ResourcePersistentId> theExsitinghPidSetToExclude) Generate and return the SQL generated by this buildergeneratePlaceholder
(Object theValue) The SQL Builder library has one annoying limitation, which is that it does not use/understand bind variables for its generated SQL.generatePlaceholders
(Collection<?> theValues) ca.uhn.fhir.context.FhirContext
If at least one predicate builder already exists, return the last one added to the chain.getOrCreateFirstPredicateBuilder
(boolean theIncludeResourceTypeAndNonDeletedFlag) If at least one predicate builder already exists, return the last one added to the chain.getOrCreateResourceTablePredicateBuilder
(boolean theIncludeResourceTypeAndNonDeletedFlag) ca.uhn.fhir.interceptor.model.RequestPartitionId
com.healthmarketscience.sqlbuilder.SelectQuery
boolean
void
void
setNeedResourceTableRoot
(boolean theNeedResourceTableRoot) If set to true (default is false), force the generated SQL to start with theHFJ_RESOURCE
table at the root of the query.
-
Constructor Details
-
SearchQueryBuilder
public SearchQueryBuilder(ca.uhn.fhir.context.FhirContext theFhirContext, ModelConfig theModelConfig, PartitionSettings thePartitionSettings, ca.uhn.fhir.interceptor.model.RequestPartitionId theRequestPartitionId, String theResourceType, SqlObjectFactory theSqlBuilderFactory, HibernatePropertiesProvider theDialectProvider, boolean theCountQuery) Constructor
-
-
Method Details
-
getFhirContext
-
addComboUniquePredicateBuilder
Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a Composite Unique search parameter -
addComboNonUniquePredicateBuilder
Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a Composite Unique search parameter -
addCoordsPredicateBuilder
public CoordsPredicateBuilder addCoordsPredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a COORDS search parameter -
addDatePredicateBuilder
public DatePredicateBuilder addDatePredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a DATE search parameter -
addForcedIdPredicateBuilder
public ForcedIdPredicateBuilder addForcedIdPredicateBuilder(@Nonnull com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder for selecting a forced ID. This is only intended for use with sorts so it can not be the root query. -
addNumberPredicateBuilder
public NumberPredicateBuilder addNumberPredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a NUMBER search parameter -
addResourceTablePredicateBuilder
public ResourceTablePredicateBuilder addResourceTablePredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a QUANTITY search parameter -
addQuantityPredicateBuilder
public QuantityPredicateBuilder addQuantityPredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a QUANTITY search parameter -
addQuantityNormalizedPredicateBuilder
public QuantityNormalizedPredicateBuilder addQuantityNormalizedPredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) -
addSourcePredicateBuilder
public SourcePredicateBuilder addSourcePredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a_source
search parameter -
addReferencePredicateBuilder
public ResourceLinkPredicateBuilder addReferencePredicateBuilder(QueryStack theQueryStack, @Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a REFERENCE search parameter -
addReferencePredicateBuilderReversed
public ResourceLinkPredicateBuilder addReferencePredicateBuilderReversed(QueryStack theQueryStack, com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a reosource link where the source and target are reversed. This is used for _has queries. -
addStringPredicateBuilder
public StringPredicateBuilder addStringPredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a STRING search parameter -
addTagPredicateBuilder
public TagPredicateBuilder addTagPredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a_tag
search parameter -
addTokenPredicateBuilder
public TokenPredicateBuilder addTokenPredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a TOKEN search parameter -
addSearchParamPresentPredicateBuilder
public SearchParamPresentPredicateBuilder addSearchParamPresentPredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a:missing
search parameter -
addUriPredicateBuilder
public UriPredicateBuilder addUriPredicateBuilder(@Nullable com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theSourceJoinColumn) Add and return a predicate builder (or a root query if no root query exists yet) for selecting on a URI search parameter -
newResourceIdBuilder
-
addJoin
public void addJoin(com.healthmarketscience.sqlbuilder.dbspec.basic.DbTable theFromTable, com.healthmarketscience.sqlbuilder.dbspec.basic.DbTable theToTable, com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theFromColumn, com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theToColumn) -
generate
Generate and return the SQL generated by this builder -
bindOffsetParameter
public int bindOffsetParameter(List<Object> theBindVariables, @Nullable Integer theOffset, org.hibernate.dialect.pagination.AbstractLimitHandler theLimitHandler, int theStartOfQueryParameterIndex, boolean theBindLimitParametersFirst) -
getOrCreateFirstPredicateBuilder
If at least one predicate builder already exists, return the last one added to the chain. If none has been selected, create a builder on HFJ_RESOURCE, add it and return it. -
getOrCreateFirstPredicateBuilder
public BaseJoiningPredicateBuilder getOrCreateFirstPredicateBuilder(boolean theIncludeResourceTypeAndNonDeletedFlag) If at least one predicate builder already exists, return the last one added to the chain. If none has been selected, create a builder on HFJ_RESOURCE, add it and return it. -
getOrCreateResourceTablePredicateBuilder
-
getOrCreateResourceTablePredicateBuilder
public ResourceTablePredicateBuilder getOrCreateResourceTablePredicateBuilder(boolean theIncludeResourceTypeAndNonDeletedFlag) -
generatePlaceholder
The SQL Builder library has one annoying limitation, which is that it does not use/understand bind variables for its generated SQL. So we work around this by replacing our contents with a string in the SQL consisting of[random UUID]-[value index]
and then -
generatePlaceholders
-
countBindVariables
-
setMatchNothing
-
addTable
-
getPartitionSettings
-
getRequestPartitionId
-
getResourceType
-
getModelConfig
-
addPredicate
-
addPredicateLastUpdated
public com.healthmarketscience.sqlbuilder.ComboCondition addPredicateLastUpdated(ca.uhn.fhir.rest.param.DateRangeParam theDateRange) -
addResourceIdsPredicate
-
excludeResourceIdsPredicate
public void excludeResourceIdsPredicate(Set<ca.uhn.fhir.rest.api.server.storage.ResourcePersistentId> theExsitinghPidSetToExclude) -
createConditionForValueWithComparator
public com.healthmarketscience.sqlbuilder.BinaryCondition createConditionForValueWithComparator(ca.uhn.fhir.rest.param.ParamPrefixEnum theComparator, com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theColumn, Object theValue) -
newChildSqlBuilder
-
getSelect
-
haveAtLeastOnePredicate
-
addSortString
public void addSortString(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theColumnValueNormalized, boolean theAscending) -
addSortNumeric
public void addSortNumeric(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theColumnValueNormalized, boolean theAscending) -
addSortDate
public void addSortDate(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theColumnValueNormalized, boolean theAscending) -
addSortString
public void addSortString(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theTheColumnValueNormalized, boolean theTheAscending, com.healthmarketscience.sqlbuilder.OrderObject.NullOrder theNullOrder) -
addSortNumeric
public void addSortNumeric(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theTheColumnValueNormalized, boolean theTheAscending, com.healthmarketscience.sqlbuilder.OrderObject.NullOrder theNullOrder) -
addSortDate
public void addSortDate(com.healthmarketscience.sqlbuilder.dbspec.basic.DbColumn theTheColumnValueNormalized, boolean theTheAscending, com.healthmarketscience.sqlbuilder.OrderObject.NullOrder theNullOrder) -
setNeedResourceTableRoot
If set to true (default is false), force the generated SQL to start with theHFJ_RESOURCE
table at the root of the query. This seems to perform better if there are multiple joins on the resource ID table.
-