From 3463d2660b51644c4d9f0ef25412b8ff2cb8af18 Mon Sep 17 00:00:00 2001 From: Andrea Boriero Date: Thu, 18 Sep 2025 12:09:33 +0200 Subject: [PATCH] [#2515] Add test for Wrong query generated when an EnbeddedId is used in a WHERE clause using the IN operator --- .../hibernate/reactive/EmbeddedIdTest.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/hibernate-reactive-core/src/test/java/org/hibernate/reactive/EmbeddedIdTest.java b/hibernate-reactive-core/src/test/java/org/hibernate/reactive/EmbeddedIdTest.java index de3590fab..de93e3565 100644 --- a/hibernate-reactive-core/src/test/java/org/hibernate/reactive/EmbeddedIdTest.java +++ b/hibernate-reactive-core/src/test/java/org/hibernate/reactive/EmbeddedIdTest.java @@ -6,6 +6,7 @@ package org.hibernate.reactive; import java.util.Collection; +import java.util.List; import java.util.Objects; import java.util.Set; @@ -49,6 +50,61 @@ public void testFindSingleId(VertxTestContext context) { ); } + @Test + public void testQueryWithListOfParametersValues(VertxTestContext context) { + test( context, getMutinySessionFactory().withTransaction( s -> s + .createQuery( "from Delivery d where d.locationId in (?1)", Delivery.class ) + .setParameter( 1, verbania ) + .getResultList() + ).invoke( deliveries -> { + assertThat( deliveries ).hasSize( 1 ); + assertThat( deliveries ).contains( pizza ); + } ) + ); + } + + @Test + public void testQueryWithWhereClauseContainingInOperator(VertxTestContext context) { + test( context, getMutinySessionFactory().withTransaction( s -> s + .createQuery( "from Delivery d where d.locationId in ?1", Delivery.class ) + .setParameter( 1, List.of( verbania ) ) + .getResultList() + ).invoke( deliveries -> { + assertThat( deliveries ).hasSize( 1 ); + assertThat( deliveries ).contains( pizza ); + } ) + ); + } + + @Test + public void testQueryWithWhereClauseContainingInOperatorListOfTwoValues(VertxTestContext context) { + test( context, getMutinySessionFactory().withTransaction( s -> s + .createQuery( "from Delivery d where d.locationId in ?1", Delivery.class ) + .setParameter( 1, List.of( verbania, hallein ) ) + .getResultList() + ).invoke( deliveries -> { + assertThat( deliveries ).hasSize( 2 ); + assertThat( deliveries ).contains( pizza ); + assertThat( deliveries ).contains( schnitzel ); + } ) + ); + } + + @Test + public void testQueryWithWhereClauseContainingInOperatorAndTwoParameters(VertxTestContext context) { + test( context, getMutinySessionFactory().withTransaction( s -> s + .createQuery( "from Delivery d where d.locationId in (?1,?2)", Delivery.class ) + .setParameter( 1, verbania ) + .setParameter( 2, hallein ) + .getResultList() + ).invoke( deliveries -> { + assertThat( deliveries ).hasSize( 2 ); + assertThat( deliveries ).contains( pizza ); + assertThat( deliveries ).contains( schnitzel ); + } ) + ); + } + @Test public void testFindMultipleIds(VertxTestContext context) { test( context, getMutinySessionFactory().withTransaction( s -> s.find( Delivery.class, verbania, hallein ) )