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 499641be6512..fe40ab83a4b5 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 @@ -824,7 +824,7 @@ public CommonQueryContract setParameter(String name, Object value) { final QueryParameter param = binding.getQueryParameter(); if ( param.allowsMultiValuedBinding() ) { final BindableType hibernateType = param.getHibernateType(); - if ( hibernateType == null || isInstance( hibernateType, value ) ) { + if ( hibernateType == null || value == null || isInstance( hibernateType, value ) ) { if ( value instanceof Collection && !isRegisteredAsBasicType( value.getClass() ) ) { //noinspection rawtypes return setParameterList( name, (Collection) value ); 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 f8e3f9dfc75e..70dc3f410cff 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 @@ -2386,10 +2386,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(