diff --git a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractSelectionQuery.java b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractSelectionQuery.java index 2238e267c70c..c38a929bc353 100644 --- a/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractSelectionQuery.java +++ b/hibernate-core/src/main/java/org/hibernate/query/spi/AbstractSelectionQuery.java @@ -147,7 +147,7 @@ protected void applyOptions(NamedQueryMemento memento) { @Override public List list() { - final HashSet fetchProfiles = beforeQueryHandlingFetchProfiles(); + final var fetchProfiles = beforeQueryHandlingFetchProfiles(); boolean success = false; try { final List result = doList(); @@ -174,10 +174,8 @@ protected HashSet beforeQueryHandlingFetchProfiles() { protected void beforeQuery() { getQueryParameterBindings().validate(); - final var session = getSession(); final var options = getQueryOptions(); - session.prepareForQueryExecution( requiresTxn( options.getLockOptions().getLockMode() ) ); prepareForExecution(); prepareSessionFlushMode( session ); diff --git a/hibernate-core/src/main/java/org/hibernate/sql/results/spi/ListResultsConsumer.java b/hibernate-core/src/main/java/org/hibernate/sql/results/spi/ListResultsConsumer.java index a3e72c7b9028..b467d43e4a96 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/results/spi/ListResultsConsumer.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/results/spi/ListResultsConsumer.java @@ -207,13 +207,14 @@ private Results createResults( boolean isEntityResultType, JavaType domainResultJavaType, int initialCollectionSize) { - if ( isEntityResultType - && ( uniqueSemantic == UniqueSemantic.ALLOW || uniqueSemantic == UniqueSemantic.FILTER ) ) { - return new EntityResult<>( domainResultJavaType, initialCollectionSize ); - } - else { - return new Results<>( domainResultJavaType, initialCollectionSize ); - } + return isEntityResultType && isAllowOrFilter() + ? new EntityResult<>( domainResultJavaType, initialCollectionSize ) + : new Results<>( domainResultJavaType, initialCollectionSize ); + } + + private boolean isAllowOrFilter() { + return uniqueSemantic == UniqueSemantic.ALLOW + || uniqueSemantic == UniqueSemantic.FILTER; } private int readRows( @@ -221,17 +222,18 @@ private int readRows( RowReader rowReader, boolean isEntityResultType, Results results) { - if ( uniqueSemantic == UniqueSemantic.FILTER - || uniqueSemantic == UniqueSemantic.ASSERT && rowReader.hasCollectionInitializers() - || uniqueSemantic == UniqueSemantic.ALLOW && isEntityResultType ) { - return readUnique( rowProcessingState, rowReader, results ); - } - else if ( uniqueSemantic == UniqueSemantic.ASSERT ) { - return readUniqueAssert( rowProcessingState, rowReader, results ); - } - else { - return read( rowProcessingState, rowReader, results ); - } + return switch ( uniqueSemantic ) { + case FILTER -> + readUnique( rowProcessingState, rowReader, results ); + case ASSERT -> rowReader.hasCollectionInitializers() + ? readUnique( rowProcessingState, rowReader, results ) + : readUniqueAssert( rowProcessingState, rowReader, results ); + case ALLOW -> isEntityResultType + ? readUnique( rowProcessingState, rowReader, results ) + : read( rowProcessingState, rowReader, results ); + case NONE, NEVER -> + read( rowProcessingState, rowReader, results ); + }; } private static int read(