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 e3c422826c52..c581e7a96a16 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 @@ -803,16 +803,17 @@ public CommonQueryContract setParameter(String name, Object value) { return this; } - private boolean multipleBinding(QueryParameter param, Object value){ - if ( param.allowsMultiValuedBinding() ) { - final Type hibernateType = param.getHibernateType(); - if ( hibernateType == null + private boolean multipleBinding(QueryParameter parameter, Object value){ + if ( parameter.allowsMultiValuedBinding() ) { + final var hibernateType = parameter.getHibernateType(); + return hibernateType == null + || value == null || hibernateType instanceof NullSqmExpressible - || isInstance( hibernateType, value ) ) { - return true; - } + || 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 4cfee36b8c46..4aa02000bbca 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 @@ -2500,10 +2500,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(