with native query Hibernate does not flush the session neither in 5 nor in 6, if you use HQL queries you’ll see the test passes
import java.util.List; import java.util.stream.Stream; import org.hibernate.testing.orm.junit.DomainModel; import org.hibernate.testing.orm.junit.SessionFactory; import org.hibernate.testing.orm.junit.SessionFactoryScope; import org.junit.jupiter.api.Test; import jakarta.persistence.Entity; import jakarta.persistence.Id; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; @DomainModel( annotatedClasses = { TestIt.Person.class } ) @SessionFactory public class TestIt { @Test public void testIt(SessionFactoryScope scope){ scope.inTransaction( session -> { List<String> resultList = session .createQuery( "select name from Person where name ='John Doe'", String.class ) .getResultList(); assertThat( resultList.size() ).isEqualTo( 0 ); Person person = new Person(1l, "John Doe"); session.persist(person); try (Stream resultStream = session .createQuery( "select name from Person where name ='John Doe'" ) .getResultStream()) { List list = resultStream.toList(); assertThat( list.size() ).isEqualTo( 1 ); } } ); } @Entity(name = "Person") public static class Person{ @Id private Long id; private String name; public Person() { } public Person(Long id, String name) { this.id = id; this.name = name; } } }