Closes #1816.
This commit is contained in:
@@ -15,6 +15,9 @@
|
||||
*/
|
||||
package com.querydsl.couchbase.document;
|
||||
|
||||
import static com.querydsl.core.types.OrderSpecifier.NullHandling.NullsFirst;
|
||||
import static com.querydsl.core.types.OrderSpecifier.NullHandling.NullsLast;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
@@ -31,6 +34,7 @@ import com.querydsl.core.types.FactoryExpression;
|
||||
import com.querydsl.core.types.Operation;
|
||||
import com.querydsl.core.types.Operator;
|
||||
import com.querydsl.core.types.Ops;
|
||||
import com.querydsl.core.types.Order;
|
||||
import com.querydsl.core.types.OrderSpecifier;
|
||||
import com.querydsl.core.types.ParamExpression;
|
||||
import com.querydsl.core.types.Path;
|
||||
@@ -39,7 +43,6 @@ import com.querydsl.core.types.PathType;
|
||||
import com.querydsl.core.types.SubQueryExpression;
|
||||
import com.querydsl.core.types.TemplateExpression;
|
||||
import com.querydsl.core.types.Visitor;
|
||||
import com.querydsl.core.types.Order;
|
||||
|
||||
/**
|
||||
* Serializes the given Querydsl query to a Document query for Couchbase.
|
||||
@@ -58,11 +61,8 @@ public abstract class CouchbaseDocumentSerializer implements Visitor<Object, Voi
|
||||
for (OrderSpecifier<?> orderBy : orderBys) {
|
||||
Object key = orderBy.getTarget().accept(this, null);
|
||||
String keyAsString = key.toString();
|
||||
Sort.NullHandling sortNullHandling = switch (orderBy.getNullHandling()) {
|
||||
case NullsFirst -> Sort.NullHandling.NULLS_FIRST;
|
||||
case NullsLast -> Sort.NullHandling.NULLS_LAST;
|
||||
default -> Sort.NullHandling.NATIVE;
|
||||
};
|
||||
Sort.NullHandling sortNullHandling = orderBy.getNullHandling() == NullsFirst ? Sort.NullHandling.NULLS_FIRST
|
||||
: orderBy.getNullHandling() == NullsLast ? Sort.NullHandling.NULLS_LAST : Sort.NullHandling.NATIVE;
|
||||
Sort.Direction sortDirection = orderBy.getOrder() == Order.ASC ? Sort.Direction.ASC : Sort.Direction.DESC;
|
||||
Sort.Order sortOrder = new Sort.Order(sortDirection, keyAsString, sortNullHandling);
|
||||
sort = sort.and(Sort.by(sortOrder));
|
||||
|
||||
@@ -25,8 +25,10 @@ import static org.springframework.data.couchbase.util.Util.exactly;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
@@ -419,7 +421,7 @@ public class CouchbaseRepositoryQuerydslIntegrationTests extends JavaIntegration
|
||||
@Test
|
||||
void testSort(){
|
||||
{
|
||||
BooleanExpression predicate = airline.name.in(Arrays.stream(saved).map(Airline::getName).toList());
|
||||
BooleanExpression predicate = airline.name.in((Arrays.stream(saved).map(Airline::getName)).collect(Collectors.toList()));
|
||||
Iterable<Airline> result = airlineRepository.findAll(predicate, Sort.by("name").ascending());
|
||||
assertArrayEquals(StreamSupport.stream(result.spliterator(), false).toArray(Airline[]::new),
|
||||
Arrays.stream(saved)
|
||||
@@ -429,7 +431,7 @@ public class CouchbaseRepositoryQuerydslIntegrationTests extends JavaIntegration
|
||||
}
|
||||
|
||||
{
|
||||
BooleanExpression predicate = airline.name.in(Arrays.stream(saved).map(Airline::getName).toList());
|
||||
BooleanExpression predicate = airline.name.in((Arrays.stream(saved).map(Airline::getName)).collect(Collectors.toList()));
|
||||
Iterable<Airline> result = airlineRepository.findAll(predicate, Sort.by("name").descending());
|
||||
assertArrayEquals(StreamSupport.stream(result.spliterator(), false).toArray(Airline[]::new),
|
||||
Arrays.stream(saved)
|
||||
@@ -439,7 +441,7 @@ public class CouchbaseRepositoryQuerydslIntegrationTests extends JavaIntegration
|
||||
}
|
||||
|
||||
{
|
||||
BooleanExpression predicate = airline.name.in(Arrays.stream(saved).map(Airline::getName).toList());
|
||||
BooleanExpression predicate = airline.name.in((Arrays.stream(saved).map(Airline::getName)).collect(Collectors.toList()));
|
||||
Iterable<Airline> result = airlineRepository.findAll(predicate, airline.name.asc());
|
||||
assertArrayEquals(StreamSupport.stream(result.spliterator(), false).toArray(Airline[]::new),
|
||||
Arrays.stream(saved)
|
||||
@@ -449,7 +451,7 @@ public class CouchbaseRepositoryQuerydslIntegrationTests extends JavaIntegration
|
||||
}
|
||||
|
||||
{
|
||||
BooleanExpression predicate = airline.name.in(Arrays.stream(saved).map(Airline::getName).toList());
|
||||
BooleanExpression predicate = airline.name.in((Arrays.stream(saved).map(Airline::getName)).collect(Collectors.toList()));
|
||||
Iterable<Airline> result = airlineRepository.findAll(predicate, airline.name.desc());
|
||||
assertArrayEquals(StreamSupport.stream(result.spliterator(), false).toArray(Airline[]::new),
|
||||
Arrays.stream(saved)
|
||||
|
||||
Reference in New Issue
Block a user