diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQuery.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQuery.java index ecdbbc51..a7947517 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQuery.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/PartTreeJdbcQuery.java @@ -107,7 +107,8 @@ public class PartTreeJdbcQuery extends AbstractJdbcQuery { this.converter = converter; this.rowMapperFactory = rowMapperFactory; - this.tree = new PartTree(queryMethod.getName(), queryMethod.getEntityInformation().getJavaType()); + this.tree = new PartTree(queryMethod.getName(), queryMethod.getResultProcessor() + .getReturnedType().getDomainType()); JdbcQueryCreator.validate(this.tree, this.parameters, this.converter.getMappingContext()); } diff --git a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQuery.java b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQuery.java index fddd21df..27ac213a 100644 --- a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQuery.java +++ b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQuery.java @@ -67,7 +67,8 @@ public class PartTreeR2dbcQuery extends AbstractR2dbcQuery { this.parameters = method.getParameters(); try { - this.tree = new PartTree(method.getName(), method.getEntityInformation().getJavaType()); + this.tree = new PartTree(method.getName(), processor.getReturnedType() + .getDomainType()); R2dbcQueryCreator.validate(this.tree, this.parameters); } catch (RuntimeException e) { throw new IllegalArgumentException( @@ -115,10 +116,9 @@ public class PartTreeR2dbcQuery extends AbstractR2dbcQuery { @Override public String toString() { - StringBuffer sb = new StringBuffer(); - sb.append(getClass().getSimpleName()); - sb.append(" [").append(getQueryMethod().getName()); - sb.append(']'); - return sb.toString(); + String sb = getClass().getSimpleName() + + " [" + getQueryMethod().getName() + + ']'; + return sb; } } diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQueryUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQueryUnitTests.java index 99c5410b..a13f87a0 100644 --- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQueryUnitTests.java +++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/query/PartTreeR2dbcQueryUnitTests.java @@ -692,12 +692,13 @@ class PartTreeR2dbcQueryUnitTests { .from(TABLE); } - @Test // GH-475 + @Test + // GH-475, GH-1687 void createsDtoProjectionQuery() throws Exception { - R2dbcQueryMethod queryMethod = getQueryMethod("findAsDtoProjectionBy"); + R2dbcQueryMethod queryMethod = getQueryMethod("findAsDtoProjectionByAge", Integer.TYPE); PartTreeR2dbcQuery r2dbcQuery = new PartTreeR2dbcQuery(queryMethod, operations, r2dbcConverter, dataAccessStrategy); - PreparedOperation preparedOperation = createQuery(queryMethod, r2dbcQuery); + PreparedOperation preparedOperation = createQuery(queryMethod, r2dbcQuery, 42); PreparedOperationAssert.assertThat(preparedOperation) // .selects("users.id", "users.first_name", "users.last_name", "users.date_of_birth", "users.age", "users.active") // @@ -756,7 +757,7 @@ class PartTreeR2dbcQueryUnitTests { R2dbcQueryMethod queryMethod = getQueryMethod("findByFirstName", Mono.class); PartTreeR2dbcQuery r2dbcQuery = new PartTreeR2dbcQuery(queryMethod, operations, r2dbcConverter, dataAccessStrategy); - R2dbcParameterAccessor accessor = new R2dbcParameterAccessor(queryMethod, new Object[] { Mono.just("John") }); + R2dbcParameterAccessor accessor = new R2dbcParameterAccessor(queryMethod, Mono.just("John")); PreparedOperation preparedOperation = createQuery(r2dbcQuery, accessor.resolveParameters().block()); BindTarget bindTarget = mock(BindTarget.class); @@ -986,7 +987,7 @@ class PartTreeR2dbcQueryUnitTests { Mono findOpenProjectionBy(); - Mono findAsDtoProjectionBy(); + Mono findAsDtoProjectionByAge(int age); Mono deleteByFirstName(String firstName);