diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryCreator.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryCreator.java index f10fc0d0b..d28b604f6 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryCreator.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryCreator.java @@ -241,12 +241,6 @@ class JdbcQueryCreator extends RelationalQueryCreator { 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 { } } + // 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); diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQueryUnitTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQueryUnitTests.java index 0ae6e18e5..cd24ec396 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQueryUnitTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQueryUnitTests.java @@ -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 { List findAllByHated(Hobby hobby); + List findAllByHatedName(String name); + List findAllByHobbies(Object hobbies); List findAllByHobbyReference(Hobby hobby);