diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/query/InClauseParameterPaddingCriteriaTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/query/InClauseParameterPaddingCriteriaTest.java index a49d2b5a4a9c..b2bf05e1fe38 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/query/InClauseParameterPaddingCriteriaTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/query/InClauseParameterPaddingCriteriaTest.java @@ -38,6 +38,7 @@ @Setting(name = AvailableSettings.USE_SQL_COMMENTS, value = "true"), @Setting(name = AvailableSettings.IN_CLAUSE_PARAMETER_PADDING, value = "true"), @Setting(name = AvailableSettings.DIALECT_NATIVE_PARAM_MARKERS, value = "false"), + @Setting(name = AvailableSettings.CRITERIA_VALUE_HANDLING_MODE, value = "bind") }, useCollectingStatementInspector = true ) @@ -103,6 +104,30 @@ public void testInClauseParameterPaddingForExpressions(EntityManagerFactoryScope assertTrue( statementInspector.getSqlQueries().get( 0 ).endsWith( "in (d1_0.id,d1_0.id,d1_0.id)" ) ); } + + @Test @JiraKey("HHH-14119") + public void testInClauseParameterBindingPadding(EntityManagerFactoryScope scope) { + final SQLStatementInspector statementInspector = scope.getCollectingStatementInspector(); + statementInspector.clear(); + + scope.inTransaction( entityManager -> { + CriteriaBuilder cb = entityManager.getCriteriaBuilder(); + CriteriaQuery query = cb.createQuery( Integer.class ); + Root document = query.from( Document.class ); + + query + .select( document.get( "id" ) ) + .where( document.get( "id" ).in( Arrays.asList( 1, 2, 3, 4, 5 ) ) ); + + + List ids = entityManager.createQuery( query ).getResultList(); + assertEquals( 1, ids.size() ); + } ); + + assertTrue( statementInspector.getSqlQueries().get( 0 ).endsWith( "in (?,?,?,?,?,?,?,?)" ) ); + + } + @Entity(name = "Document") public static class Document {