diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/JdbcRepositoryFactory.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/JdbcRepositoryFactory.java index e687e9a14..d306ce27e 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/JdbcRepositoryFactory.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/support/JdbcRepositoryFactory.java @@ -27,10 +27,10 @@ import org.springframework.data.mapping.callback.EntityCallbacks; import org.springframework.data.relational.core.dialect.Dialect; import org.springframework.data.relational.core.mapping.RelationalMappingContext; import org.springframework.data.relational.core.mapping.RelationalPersistentEntity; -import org.springframework.data.repository.core.EntityInformation; +import org.springframework.data.relational.repository.query.RelationalEntityInformation; +import org.springframework.data.relational.repository.support.MappingRelationalEntityInformation; import org.springframework.data.repository.core.RepositoryInformation; import org.springframework.data.repository.core.RepositoryMetadata; -import org.springframework.data.repository.core.support.PersistentEntityInformation; import org.springframework.data.repository.core.support.RepositoryFactorySupport; import org.springframework.data.repository.query.CachingValueExpressionDelegate; import org.springframework.data.repository.query.QueryLookupStrategy; @@ -104,13 +104,12 @@ public class JdbcRepositoryFactory extends RepositoryFactorySupport { this.queryMappingConfiguration = queryMappingConfiguration; } - @SuppressWarnings("unchecked") @Override - public EntityInformation getEntityInformation(Class aClass) { + public RelationalEntityInformation getEntityInformation(RepositoryMetadata metadata) { - RelationalPersistentEntity entity = context.getRequiredPersistentEntity(aClass); + RelationalPersistentEntity entity = context.getRequiredPersistentEntity(metadata.getDomainType()); - return (EntityInformation) new PersistentEntityInformation<>(entity); + return new MappingRelationalEntityInformation<>(entity); } @Override diff --git a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/support/R2dbcRepositoryFactory.java b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/support/R2dbcRepositoryFactory.java index 5c31b4377..a18dd815a 100644 --- a/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/support/R2dbcRepositoryFactory.java +++ b/spring-data-r2dbc/src/main/java/org/springframework/data/r2dbc/repository/support/R2dbcRepositoryFactory.java @@ -104,7 +104,8 @@ public class R2dbcRepositoryFactory extends ReactiveRepositoryFactorySupport { @Override protected Object getTargetRepository(RepositoryInformation information) { - RelationalEntityInformation entityInformation = getEntityInformation(information.getDomainType()); + RelationalEntityInformation entityInformation = getEntityInformation(information); + return getTargetRepositoryViaReflection(information, entityInformation, operations, this.converter); } @@ -116,10 +117,11 @@ public class R2dbcRepositoryFactory extends ReactiveRepositoryFactorySupport { } @Override - public RelationalEntityInformation getEntityInformation(Class domainClass) { + public RelationalEntityInformation getEntityInformation(RepositoryMetadata metadata) { + + RelationalPersistentEntity entity = this.mappingContext.getRequiredPersistentEntity(metadata.getDomainType()); - RelationalPersistentEntity entity = this.mappingContext.getRequiredPersistentEntity(domainClass); - return new MappingRelationalEntityInformation<>((RelationalPersistentEntity) entity); + return new MappingRelationalEntityInformation<>(entity); } /** diff --git a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/support/R2dbcRepositoryFactoryUnitTests.java b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/support/R2dbcRepositoryFactoryUnitTests.java index 6adbe1af3..5af92398a 100644 --- a/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/support/R2dbcRepositoryFactoryUnitTests.java +++ b/spring-data-r2dbc/src/test/java/org/springframework/data/r2dbc/repository/support/R2dbcRepositoryFactoryUnitTests.java @@ -33,6 +33,7 @@ import org.springframework.data.relational.core.dialect.AnsiDialect; import org.springframework.data.relational.repository.query.RelationalEntityInformation; import org.springframework.data.relational.repository.support.MappingRelationalEntityInformation; import org.springframework.data.repository.Repository; +import org.springframework.data.repository.core.support.AbstractRepositoryMetadata; import org.springframework.r2dbc.core.DatabaseClient; /** @@ -60,7 +61,8 @@ public class R2dbcRepositoryFactoryUnitTests { public void usesMappingRelationalEntityInformationIfMappingContextSet() { R2dbcRepositoryFactory factory = new R2dbcRepositoryFactory(databaseClient, dataAccessStrategy); - RelationalEntityInformation entityInformation = factory.getEntityInformation(Person.class); + RelationalEntityInformation entityInformation = factory + .getEntityInformation(AbstractRepositoryMetadata.getMetadata(MyPersonRepository.class)); assertThat(entityInformation).isInstanceOf(MappingRelationalEntityInformation.class); }