Skip to content

Commit 287517e

Browse files
committed
HHH-15497 Count query when counting polymorphic subclasses by type fails when run twice
1 parent 688cfc9 commit 287517e

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

hibernate-core/src/main/java/org/hibernate/query/internal/QueryParameterBindingImpl.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,7 @@ public class QueryParameterBindingImpl<T> implements QueryParameterBinding<T>, J
5151
protected QueryParameterBindingImpl(
5252
QueryParameter<T> queryParameter,
5353
SessionFactoryImplementor sessionFactory) {
54-
this.queryParameter = queryParameter;
55-
this.sessionFactory = sessionFactory;
56-
this.bindType = queryParameter.getHibernateType();
54+
this( queryParameter, sessionFactory, queryParameter.getHibernateType() );
5755
}
5856

5957
/**

hibernate-core/src/main/java/org/hibernate/query/sqm/internal/SqmUtil.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,11 @@ public static JdbcParameterBindings createJdbcParameterBindings(
204204

205205
final Map<SqmParameter<?>, List<List<JdbcParameter>>> jdbcParamMap = jdbcParamXref.get( queryParam );
206206
for ( SqmParameter<?> sqmParameter : sqmParameters ) {
207+
final MappingModelExpressible resolvedMappingModelType = mappingModelResolutionAccess
208+
.getResolvedMappingModelType( sqmParameter );
209+
if ( resolvedMappingModelType != null ) {
210+
domainParamBinding.setType( resolvedMappingModelType );
211+
}
207212
final Bindable parameterType = determineParameterType(
208213
domainParamBinding,
209214
queryParam,

hibernate-core/src/main/java/org/hibernate/query/sqm/sql/BaseSqmToSqlAstConverter.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@
181181
import org.hibernate.query.sqm.tree.domain.SqmPluralValuedSimplePath;
182182
import org.hibernate.query.sqm.tree.domain.SqmTreatedPath;
183183
import org.hibernate.query.sqm.tree.domain.SqmTreatedRoot;
184+
import org.hibernate.query.sqm.tree.expression.AbstractSqmExpression;
184185
import org.hibernate.query.sqm.tree.expression.Conversion;
185186
import org.hibernate.query.sqm.tree.expression.JpaCriteriaParameter;
186187
import org.hibernate.query.sqm.tree.expression.SqmAliasedNodeRef;
@@ -4889,13 +4890,7 @@ protected Expression consumeSqmParameter(
48894890

48904891
final QueryParameterImplementor<?> queryParameter = domainParameterXref.getQueryParameter( sqmParameter );
48914892
final QueryParameterBinding binding = domainParameterBindings.getBinding( queryParameter );
4892-
if ( binding.setType( valueMapping ) ) {
4893-
replaceJdbcParametersType(
4894-
sqmParameter,
4895-
domainParameterXref.getSqmParameters( queryParameter ),
4896-
valueMapping
4897-
);
4898-
}
4893+
binding.setType( valueMapping );
48994894
return new SqmParameterInterpretation(
49004895
sqmParameter,
49014896
queryParameter,

0 commit comments

Comments
 (0)