diff --git a/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryCreator.java b/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryCreator.java index 9162908..20a50db 100644 --- a/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryCreator.java +++ b/src/main/java/org/springframework/data/r2dbc/repository/query/R2dbcQueryCreator.java @@ -56,6 +56,7 @@ class R2dbcQueryCreator extends RelationalQueryCreator> { private final ReactiveDataAccessStrategy dataAccessStrategy; private final RelationalEntityMetadata entityMetadata; private final List projectedProperties; + private final Class entityToRead; /** * Creates new instance of this class with the given {@link PartTree}, {@link ReactiveDataAccessStrategy}, @@ -78,6 +79,7 @@ class R2dbcQueryCreator extends RelationalQueryCreator> { this.dataAccessStrategy = dataAccessStrategy; this.entityMetadata = entityMetadata; this.projectedProperties = projectedProperties; + this.entityToRead = entityMetadata.getTableEntity().getType(); } /** @@ -90,7 +92,7 @@ class R2dbcQueryCreator extends RelationalQueryCreator> { @Override protected PreparedOperation complete(@Nullable Criteria criteria, Sort sort) { - StatementMapper statementMapper = dataAccessStrategy.getStatementMapper().forType(entityMetadata.getJavaType()); + StatementMapper statementMapper = dataAccessStrategy.getStatementMapper().forType(entityToRead); if (tree.isDelete()) { return delete(criteria, statementMapper); @@ -157,7 +159,7 @@ class R2dbcQueryCreator extends RelationalQueryCreator> { } else if (tree.isExistsProjection()) { - expressions = dataAccessStrategy.getIdentifierColumns(entityMetadata.getJavaType()).stream() + expressions = dataAccessStrategy.getIdentifierColumns(entityToRead).stream() .map(table::column) .collect(Collectors.toList()); } else if (tree.isCountProjection()) { @@ -165,7 +167,7 @@ class R2dbcQueryCreator extends RelationalQueryCreator> { SqlIdentifier idColumn = entityMetadata.getTableEntity().getRequiredIdProperty().getColumnName(); expressions = Collections.singletonList(Functions.count(table.column(idColumn))); } else { - expressions = dataAccessStrategy.getAllColumns(entityMetadata.getJavaType()).stream() + expressions = dataAccessStrategy.getAllColumns(entityToRead).stream() .map(table::column) .collect(Collectors.toList()); }