Skip to content

R2dbcEntityTemplate fails to instantiate interface using fluent as(…) projection #1690

Closed
@shuaqiu

Description

@shuaqiu

I have define a query as

    public Mono<IMember> findById(final String id) {
        final Query query = Query
            .query(CriteriaBuilder.buildIdQuery(id));
        return entityTemplate.select(MemberBo.class)
            .from(TABLE__MEMBER)
            .as(IMember.class)
            .matching(query)
            .first();
    }

while IMember is the super interface of MemberBo.

The query can correctly run at version 3.1.5 of spring-data-r2dbc, but throws exception after upgrade to version 3.2.0

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.member.api.bean.IMember]: Specified class is an interface
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:137) ~[spring-beans-6.1.1.jar:6.1.1]
	at org.springframework.data.mapping.model.ReflectionEntityInstantiator.instantiateClass(ReflectionEntityInstantiator.java:139) ~[spring-data-commons-3.2.0.jar:3.2.0]
	at org.springframework.data.mapping.model.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:57) ~[spring-data-commons-3.2.0.jar:3.2.0]
	at org.springframework.data.mapping.model.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:98) ~[spring-data-commons-3.2.0.jar:3.2.0]
	at org.springframework.data.relational.core.conversion.MappingRelationalConverter.read(MappingRelationalConverter.java:454) ~[spring-data-relational-3.2.0.jar:3.2.0]
	at org.springframework.data.relational.core.conversion.MappingRelationalConverter.readAggregate(MappingRelationalConverter.java:348) ~[spring-data-relational-3.2.0.jar:3.2.0]
	at org.springframework.data.relational.core.conversion.MappingRelationalConverter.readAggregate(MappingRelationalConverter.java:311) ~[spring-data-relational-3.2.0.jar:3.2.0]
	at org.springframework.data.relational.core.conversion.MappingRelationalConverter.read(MappingRelationalConverter.java:298) ~[spring-data-relational-3.2.0.jar:3.2.0]
	at org.springframework.data.relational.core.conversion.MappingRelationalConverter.read(MappingRelationalConverter.java:294) ~[spring-data-relational-3.2.0.jar:3.2.0]
	at org.springframework.data.r2dbc.core.R2dbcEntityTemplate.lambda$getRowsFetchSpec$13(R2dbcEntityTemplate.java:795) ~[spring-data-r2dbc-3.2.0.jar:3.2.0]
	at io.r2dbc.proxy.callback.ResultCallbackHandler.lambda$invoke$0(ResultCallbackHandler.java:92) ~[r2dbc-proxy-1.1.2.RELEASE.jar:1.1.2.RELEASE]
	at io.asyncer.r2dbc.mysql.MySqlResult.lambda$map$1(MySqlResult.java:87) ~[r2dbc-mysql-1.0.5.jar:1.0.5]
	at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:179) ~[reactor-core-3.6.0.jar:3.6.0]
	at reactor.core.publisher.FluxHandleFuseable$HandleFuseableConditionalSubscriber.onNext(FluxHandleFuseable.java:505) ~[reactor-core-3.6.0.jar:3.6.0]
	at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) ~[reactor-core-3.6.0.jar:3.6.0]

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: regressionA regression from a previous release

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions