Browse Source

Fix SQL generation for query with sorting.

Closes #1919
3.2.x
Jens Schauder 1 year ago
parent
commit
7274668d2d
No known key found for this signature in database
GPG Key ID: 74F6C554AE971567
  1. 2
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlGenerator.java
  2. 36
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/core/convert/SqlGeneratorUnitTests.java

2
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/core/convert/SqlGenerator.java

@ -1022,7 +1022,7 @@ class SqlGenerator { @@ -1022,7 +1022,7 @@ class SqlGenerator {
if (query.isSorted()) {
List<OrderByField> sort = this.queryMapper.getMappedSort(table, query.getSort(), entity);
selectOrdered = selectBuilder.orderBy(sort);
selectOrdered = selectOrdered.orderBy(sort);
}
SelectBuilder.SelectLimitOffset limitable = (SelectBuilder.SelectLimitOffset) selectOrdered;

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

@ -342,6 +342,42 @@ class SqlGeneratorUnitTests { @@ -342,6 +342,42 @@ class SqlGeneratorUnitTests {
"LIMIT 10");
}
@Test // GH-1919
void selectByQuery() {
Query query = Query.query(Criteria.where("id").is(23L));
String sql = sqlGenerator.selectByQuery(query, new MapSqlParameterSource());
assertThat(sql).contains( //
"SELECT", //
"FROM dummy_entity", //
"LEFT OUTER JOIN referenced_entity ref ON ref.dummy_entity = dummy_entity.id1", //
"LEFT OUTER JOIN second_level_referenced_entity ref_further ON ref_further.referenced_entity = ref.x_l1id", //
"WHERE dummy_entity.id1 = :id1" //
);
}
@Test // GH-1919
void selectBySortedQuery() {
Query query = Query.query(Criteria.where("id").is(23L)) //
.sort(Sort.by(Sort.Order.asc("id")));
String sql = sqlGenerator.selectByQuery(query, new MapSqlParameterSource());
assertThat(sql).contains( //
"SELECT", //
"FROM dummy_entity", //
"LEFT OUTER JOIN referenced_entity ref ON ref.dummy_entity = dummy_entity.id1", //
"LEFT OUTER JOIN second_level_referenced_entity ref_further ON ref_further.referenced_entity = ref.x_l1id", //
"WHERE dummy_entity.id1 = :id1", //
"ORDER BY dummy_entity.id1 ASC" //
);
assertThat(sql).containsOnlyOnce("LEFT OUTER JOIN referenced_entity ref ON ref.dummy_entity = dummy_entity.id1");
assertThat(sql).containsOnlyOnce("LEFT OUTER JOIN second_level_referenced_entity ref_further ON ref_further.referenced_entity = ref.x_l1id");
}
@Test // DATAJDBC-131, DATAJDBC-111
void findAllByProperty() {

Loading…
Cancel
Save