Browse Source

tried to reproduce the issue

issue/2138-query-with-pageable
Jens Schauder 3 months ago
parent
commit
dc353bdac8
No known key found for this signature in database
GPG Key ID: 2BE5D185CD2A1CE6
  1. 32
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/AbstractJdbcAggregateTemplateIntegrationTests.java
  2. 36
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlGeneratorUnitTests.java

32
spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/AbstractJdbcAggregateTemplateIntegrationTests.java

@ -31,7 +31,6 @@ import java.util.stream.Stream; @@ -31,7 +31,6 @@ import java.util.stream.Stream;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@ -44,6 +43,7 @@ import org.springframework.data.annotation.PersistenceCreator; @@ -44,6 +43,7 @@ import org.springframework.data.annotation.PersistenceCreator;
import org.springframework.data.annotation.ReadOnlyProperty;
import org.springframework.data.annotation.Version;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Persistable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jdbc.testing.EnabledOnFeature;
@ -236,10 +236,30 @@ abstract class AbstractJdbcAggregateTemplateIntegrationTests { @@ -236,10 +236,30 @@ abstract class AbstractJdbcAggregateTemplateIntegrationTests {
Iterable<SimpleListParent> reloadedById = template.findAll(query, SimpleListParent.class);
assertThat(reloadedById) //
.extracting(e -> e.id, e-> e.name, e -> e.content.size()) //
.extracting(e -> e.id, e -> e.name, e -> e.content.size()) //
.containsExactly(tuple(two.id, two.name, 2));
}
@Test // GH-1601
void findAllByQueryWithConflictingSort() {
SimpleListParent one = template.save(SimpleListParent.of("one", "one_1"));
SimpleListParent two = template.save(SimpleListParent.of("two", "two_1", "two_2"));
SimpleListParent three = template.save(SimpleListParent.of("three", "three_1", "three_2", "three_3"));
CriteriaDefinition criteria = CriteriaDefinition.empty();
Query query = Query.query(criteria);
query.sort(Sort.by(Sort.Direction.ASC, "id"));
Pageable pageable = PageRequest.of(0, 3, Sort.by(Sort.Direction.DESC, "name"));
Iterable<SimpleListParent> reloadedById = template.findAll(query, SimpleListParent.class, pageable);
assertThat(reloadedById) //
.extracting(e -> e.id) //
.containsExactly(two.id, three.id, one.id);
}
@Test // GH-1803
void findAllByQueryWithColumns() {
@ -252,7 +272,7 @@ abstract class AbstractJdbcAggregateTemplateIntegrationTests { @@ -252,7 +272,7 @@ abstract class AbstractJdbcAggregateTemplateIntegrationTests {
Iterable<SimpleListParent> reloadedById = template.findAll(query, SimpleListParent.class);
assertThat(reloadedById) //
.extracting(e -> e.id, e-> e.name, e -> e.content.size()) //
.extracting(e -> e.id, e -> e.name, e -> e.content.size()) //
.containsExactly(tuple(two.id, null, 2));
}
@ -1382,8 +1402,7 @@ abstract class AbstractJdbcAggregateTemplateIntegrationTests { @@ -1382,8 +1402,7 @@ abstract class AbstractJdbcAggregateTemplateIntegrationTests {
void mapWithEnumKey() {
EnumMapOwner enumMapOwner = template
.save(
new EnumMapOwner(null, "OwnerName", Map.of(Color.BLUE, new MapElement("Element"))));
.save(new EnumMapOwner(null, "OwnerName", Map.of(Color.BLUE, new MapElement("Element"))));
Iterable<EnumMapOwner> enumMapOwners = template.findAll(EnumMapOwner.class);
@ -2220,8 +2239,7 @@ abstract class AbstractJdbcAggregateTemplateIntegrationTests { @@ -2220,8 +2239,7 @@ abstract class AbstractJdbcAggregateTemplateIntegrationTests {
@Table("BEFORE_CONVERT_CALLBACK_FOR_SAVE_BATCH")
static class BeforeConvertCallbackForSaveBatch {
@Id
private String id;
@Id private String id;
private String name;

36
spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlGeneratorUnitTests.java

@ -939,7 +939,7 @@ class SqlGeneratorUnitTests { @@ -939,7 +939,7 @@ class SqlGeneratorUnitTests {
}
@Test // GH-1192
void selectByQueryPaginationValidTest() {
void selectByQueryPlusPagination() {
SqlGenerator sqlGenerator = createSqlGenerator(DummyEntity.class);
@ -965,6 +965,40 @@ class SqlGeneratorUnitTests { @@ -965,6 +965,40 @@ class SqlGeneratorUnitTests {
.containsOnly(entry("x_name", probe.name));
}
@Test // GH-2138
void selectByQueryWithRedundantPagination() {
SqlGenerator sqlGenerator = createSqlGenerator(DummyEntity.class);
DummyEntity probe = new DummyEntity();
probe.name = "Diego";
Criteria criteria = Criteria.where("name").is(probe.name);
Query query = Query.query(criteria);
query.sort(Sort.by(Sort.Order.asc("id")));
query.offset(23);
query.limit(11);
PageRequest pageRequest = PageRequest.of(2, 1, Sort.by(Sort.Order.asc("name")));
MapSqlParameterSource parameterSource = new MapSqlParameterSource();
String generatedSQL = sqlGenerator.selectByQuery(query, parameterSource, pageRequest);
assertThat(generatedSQL) //
.isNotNull() //
.contains(":x_name") //
.containsIgnoringCase("ORDER BY dummy_entity.x_name ASC") //
.containsIgnoringCase("LIMIT 1") //
.containsIgnoringCase("OFFSET 2 LIMIT 1") //
.doesNotContainIgnoringCase("LIMIT 11") //
.doesNotContainIgnoringCase("OFFSET 23");
assertThat(parameterSource.getValues()) //
.containsOnly(entry("x_name", probe.name));
System.out.println(generatedSQL);
}
@Test // GH-1161
void backReferenceShouldConsiderRenamedParent() {

Loading…
Cancel
Save