From 41deada1e96ab6e53c9d130202d5d72e243cb406 Mon Sep 17 00:00:00 2001 From: Andrea Boriero Date: Thu, 13 Nov 2025 15:00:31 +0100 Subject: [PATCH 1/2] HHH-19926 Add test for issue --- .../java/org/hibernate/orm/test/query/hql/FunctionTests.java | 5 +++++ 1 file changed, 5 insertions(+) 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( From b1d9b6573858e030c37013ebe5244d9b22828d7b Mon Sep 17 00:00:00 2001 From: Andrea Boriero Date: Thu, 13 Nov 2025 15:01:36 +0100 Subject: [PATCH 2/2] HHH-19926 NullPointerException when executing JPQL IN clause with null parameter on entity association --- .../query/spi/AbstractCommonQueryContract.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) 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) {