|
189 | 189 | import org.hibernate.sql.exec.internal.AbstractJdbcParameter; |
190 | 190 | import org.hibernate.sql.exec.internal.JdbcOperationQueryInsertImpl; |
191 | 191 | import org.hibernate.sql.exec.internal.JdbcParameterBindingImpl; |
| 192 | +import org.hibernate.sql.exec.internal.JdbcParameterImpl; |
192 | 193 | import org.hibernate.sql.exec.internal.JdbcParametersImpl; |
193 | 194 | import org.hibernate.sql.exec.internal.SqlTypedMappingJdbcParameter; |
194 | 195 | import org.hibernate.sql.exec.spi.ExecutionContext; |
@@ -6742,9 +6743,20 @@ private int getSortSelectionIndex(QuerySpec querySpec, SortSpecification sortSpe |
6742 | 6743 |
|
6743 | 6744 | private boolean isFetchFirstRowOnly(QueryPart queryPart) { |
6744 | 6745 | return queryPart.getFetchClauseType() == FetchClauseType.ROWS_ONLY |
6745 | | - && queryPart.getFetchClauseExpression() instanceof QueryLiteral<?> |
6746 | | - && Integer.valueOf( 1 ) |
6747 | | - .equals( ( (QueryLiteral<?>) queryPart.getFetchClauseExpression() ).getLiteralValue() ); |
| 6746 | + && (queryPart.getFetchClauseExpression() instanceof QueryLiteral<?> queryLiteral |
| 6747 | + && Integer.valueOf( 1 ).equals( queryLiteral.getLiteralValue() ) |
| 6748 | + || queryPart.getFetchClauseExpression() instanceof SqmParameterInterpretation sqmParameterInterpretation |
| 6749 | + && isParameterValueEqualToOne( sqmParameterInterpretation ) |
| 6750 | + ); |
| 6751 | + } |
| 6752 | + |
| 6753 | + private boolean isParameterValueEqualToOne(SqmParameterInterpretation sqmParameterInterpretation) { |
| 6754 | + if ( sqmParameterInterpretation.getResolvedExpression() instanceof JdbcParameterImpl jdbcParameter ) { |
| 6755 | + assert jdbcParameterBindings != null; |
| 6756 | + final JdbcParameterBinding binding = jdbcParameterBindings.getBinding( jdbcParameter ); |
| 6757 | + return binding != null && Integer.valueOf( 1 ).equals( binding.getBindValue() ); |
| 6758 | + } |
| 6759 | + return false; |
6748 | 6760 | } |
6749 | 6761 |
|
6750 | 6762 | private SelectStatement stripToSelectClause(SelectStatement statement) { |
|
0 commit comments