diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java index 3f43276df101..a82b490e1e55 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractCommonQueryContract.java @@ -815,11 +815,11 @@ public CommonQueryContract setParameter(String name, Object value) { private boolean multipleBinding(QueryParameter parameter, Object value){ if ( parameter.allowsMultiValuedBinding() ) { final var hibernateType = parameter.getHibernateType(); - if ( hibernateType == null || isInstance( hibernateType, value ) ) { - return true; - } + return hibernateType == null || value == null || isInstance( hibernateType, value ); + } + else { + return false; } - return false; } private void setTypedParameter(String name, TypedParameterValue typedValue) { diff --git a/hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/FunctionTests.java b/hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/FunctionTests.java index 43145f7d8bd8..4f05ed67cb75 100644 --- a/hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/FunctionTests.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/query/hql/FunctionTests.java @@ -2504,10 +2504,15 @@ public void testIn(SessionFactoryScope scope) { session.createQuery("select 1 where 1 in :list", Integer.class) .setParameterList("list",List.of()) .list().size() ); + assertEquals( 0, + session.createQuery( "select e from EntityWithOneToOne e where e.other in (:list)" ) + .setParameter( "list", null ) + .list().size() ); } ); } + @Test public void testMaxGreatest(SessionFactoryScope scope) { scope.inTransaction(