@ -16,13 +16,11 @@
@@ -16,13 +16,11 @@
package org.springframework.data.jdbc.repository.support ;
import java.util.ArrayList ;
import java.util.Collection ;
import java.util.Collections ;
import java.util.List ;
import java.util.function.Function ;
import java.util.function.UnaryOperator ;
import java.util.stream.Stream ;
import java.util.stream.StreamSupport ;
import org.springframework.data.domain.Example ;
import org.springframework.data.domain.OffsetScrollPosition ;
@ -93,16 +91,8 @@ class FetchableFluentQueryByExample<S, R> extends FluentQuerySupport<S, R> {
@@ -93,16 +91,8 @@ class FetchableFluentQueryByExample<S, R> extends FluentQuerySupport<S, R> {
private List < R > findAll ( Query query ) {
Function < Object , R > conversionFunction = this . getConversionFunction ( ) ;
Iterable < S > raw = this . entityOperations . findAll ( query , getExampleType ( ) ) ;
List < R > result = new ArrayList < > ( raw instanceof Collections ? ( ( Collection < ? > ) raw ) . size ( ) : 16 ) ;
for ( S s : raw ) {
result . add ( conversionFunction . apply ( s ) ) ;
}
return result ;
List < S > raw = this . entityOperations . findAll ( query , getExampleType ( ) ) ;
return mapContent ( raw ) ;
}
@Override
@ -133,21 +123,33 @@ class FetchableFluentQueryByExample<S, R> extends FluentQuerySupport<S, R> {
@@ -133,21 +123,33 @@ class FetchableFluentQueryByExample<S, R> extends FluentQuerySupport<S, R> {
Query contentQuery = createQuery ( p - > p . with ( pageable ) ) ;
List < S > content = this . entityOperations . findAll ( contentQuery , getExampleType ( ) ) ;
List < R > result = mapContent ( content ) ;
return PageableExecutionUtils . getPage ( result , pageable ,
( ) - > this . entityOperations . count ( createQuery ( ) , getExampleType ( ) ) ) ;
}
@SuppressWarnings ( "unchecked" )
private List < R > mapContent ( List < S > content ) {
Function < Object , R > conversionFunction = getConversionFunction ( ) ;
if ( conversionFunction = = Function . identity ( ) ) {
return ( List < R > ) content ;
}
List < R > result = new ArrayList < > ( content . size ( ) ) ;
for ( S s : content ) {
result . add ( getConversionFunction ( ) . apply ( s ) ) ;
result . add ( conversionFunction . apply ( s ) ) ;
}
return PageableExecutionUtils . getPage ( result , pageable , ( ) - > this . entityOperations . count ( createQuery ( ) , getExampleType ( ) ) ) ;
return result ;
}
@Override
public Stream < R > stream ( ) {
return StreamSupport
. stream ( this . entityOperations . findAll ( createQuery ( ) . sort ( getSort ( ) ) , getExampleType ( ) ) . spliterator ( ) , false )
. map ( item - > this . getConversionFunction ( ) . apply ( item ) ) ;
return this . entityOperations . streamAll ( createQuery ( ) . sort ( getSort ( ) ) , getExampleType ( ) )
. map ( getConversionFunction ( ) ) ;
}
@Override
@ -173,7 +175,6 @@ class FetchableFluentQueryByExample<S, R> extends FluentQuerySupport<S, R> {
@@ -173,7 +175,6 @@ class FetchableFluentQueryByExample<S, R> extends FluentQuerySupport<S, R> {
}
query = query . limit ( getLimit ( ) ) ;
query = queryCustomizer . apply ( query ) ;
return query ;