Browse Source

Avoid unnecessary joins.

Original pull request #980
pull/981/head
Jens Schauder 5 years ago
parent
commit
b99b4aaf2d
No known key found for this signature in database
GPG Key ID: 45CC872F17423DBF
  1. 12
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryCreator.java
  2. 4
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQueryUnitTests.java

12
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryCreator.java

@ -241,12 +241,6 @@ class JdbcQueryCreator extends RelationalQueryCreator<ParametrizedQuery> { @@ -241,12 +241,6 @@ class JdbcQueryCreator extends RelationalQueryCreator<ParametrizedQuery> {
PersistentPropertyPathExtension extPath = new PersistentPropertyPathExtension(context, path);
// add a join if necessary
Join join = getJoin(sqlContext, extPath);
if (join != null) {
joinTables.add(join);
}
if (returnedType.needsCustomConstruction()) {
if (!returnedType.getInputProperties()
.contains(extPath.getRequiredPersistentPropertyPath().getBaseProperty().getName())) {
@ -254,6 +248,12 @@ class JdbcQueryCreator extends RelationalQueryCreator<ParametrizedQuery> { @@ -254,6 +248,12 @@ class JdbcQueryCreator extends RelationalQueryCreator<ParametrizedQuery> {
}
}
// add a join if necessary
Join join = getJoin(sqlContext, extPath);
if (join != null) {
joinTables.add(join);
}
Column column = getColumn(sqlContext, extPath);
if (column != null) {
columnExpressions.add(column);

4
spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQueryUnitTests.java

@ -126,7 +126,7 @@ public class PartTreeJdbcQueryUnitTests { @@ -126,7 +126,7 @@ public class PartTreeJdbcQueryUnitTests {
PartTreeJdbcQuery jdbcQuery = createQuery(queryMethod);
ParametrizedQuery query = jdbcQuery.createQuery(getAccessor(queryMethod, new Object[] { "John" }), returnedType);
assertThat(query.getQuery()).isEqualTo("SELECT " + TABLE + ".\"FIRST_NAME\" AS \"FIRST_NAME\" " + JOIN_CLAUSE
assertThat(query.getQuery()).isEqualTo("SELECT " + TABLE + ".\"FIRST_NAME\" AS \"FIRST_NAME\" FROM \"users\""
+ " WHERE " + TABLE + ".\"FIRST_NAME\" = :first_name");
}
@ -601,6 +601,8 @@ public class PartTreeJdbcQueryUnitTests { @@ -601,6 +601,8 @@ public class PartTreeJdbcQueryUnitTests {
List<User> findAllByHated(Hobby hobby);
List<User> findAllByHatedName(String name);
List<User> findAllByHobbies(Object hobbies);
List<User> findAllByHobbyReference(Hobby hobby);

Loading…
Cancel
Save