diff --git a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/results/graph/entity/internal/ReactiveEntitySelectFetchInitializer.java b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/results/graph/entity/internal/ReactiveEntitySelectFetchInitializer.java index 8f848d01b..6d5ea5418 100644 --- a/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/results/graph/entity/internal/ReactiveEntitySelectFetchInitializer.java +++ b/hibernate-reactive-core/src/main/java/org/hibernate/reactive/sql/results/graph/entity/internal/ReactiveEntitySelectFetchInitializer.java @@ -23,7 +23,7 @@ import org.hibernate.proxy.LazyInitializer; import org.hibernate.reactive.logging.impl.Log; import org.hibernate.reactive.logging.impl.LoggerFactory; -import org.hibernate.reactive.session.ReactiveSession; +import org.hibernate.reactive.session.ReactiveQueryProducer; import org.hibernate.reactive.sql.results.graph.ReactiveInitializer; import org.hibernate.spi.NavigablePath; import org.hibernate.sql.results.graph.AssemblerCreationState; @@ -154,7 +154,7 @@ else if ( data.getInstance() == null ) { data.setState( State.INITIALIZED ); final String entityName = concreteDescriptor.getEntityName(); - return ( (ReactiveSession) session ).reactiveInternalLoad( + return ( (ReactiveQueryProducer) session ).reactiveInternalLoad( entityName, data.getEntityIdentifier(), true, diff --git a/hibernate-reactive-core/src/test/java/org/hibernate/reactive/MutinyStatelessSessionTest.java b/hibernate-reactive-core/src/test/java/org/hibernate/reactive/MutinyStatelessSessionTest.java index cde496e57..f68bb8941 100644 --- a/hibernate-reactive-core/src/test/java/org/hibernate/reactive/MutinyStatelessSessionTest.java +++ b/hibernate-reactive-core/src/test/java/org/hibernate/reactive/MutinyStatelessSessionTest.java @@ -141,22 +141,26 @@ public void testStatelessSessionGetMultiple(VertxTestContext context) { @Test public void testStatelessSessionCriteria(VertxTestContext context) { GuineaPig pig = new GuineaPig( "Aloi" ); + GuineaPig mate = new GuineaPig("Aloina"); + pig.mate = mate; CriteriaBuilder cb = getSessionFactory().getCriteriaBuilder(); CriteriaQuery query = cb.createQuery( GuineaPig.class ); Root gp = query.from( GuineaPig.class ); query.where( cb.equal( gp.get( "name" ), cb.parameter( String.class, "n" ) ) ); + query.orderBy( cb.asc( gp.get( "name" ) ) ); CriteriaUpdate update = cb.createCriteriaUpdate( GuineaPig.class ); - update.from( GuineaPig.class ); + Root root = update.from(GuineaPig.class); update.set( "name", "Bob" ); + update.where( root.get( "mate" ).isNotNull() ); CriteriaDelete delete = cb.createCriteriaDelete( GuineaPig.class ); delete.from( GuineaPig.class ); test( context, getMutinySessionFactory().openStatelessSession() - .chain( ss -> ss.insert( pig ) + .chain( ss -> ss.insertMultiple( List.of(mate, pig) ) .chain( v -> ss.createQuery( query ) .setParameter( "n", pig.name ) .getResultList() ) @@ -168,7 +172,7 @@ public void testStatelessSessionCriteria(VertxTestContext context) { .chain( v -> ss.createQuery( update ).executeUpdate() ) .invoke( rows -> assertEquals( 1, rows ) ) .chain( v -> ss.createQuery( delete ).executeUpdate() ) - .invoke( rows -> assertEquals( 1, rows ) ) + .invoke( rows -> assertEquals( 2, rows ) ) .chain( v -> ss.close() ) ) ); } @@ -223,6 +227,9 @@ public static class GuineaPig { @Version private int version; + @ManyToOne + private GuineaPig mate; + public GuineaPig() { }