3232import org .springframework .core .ParameterNameDiscoverer ;
3333import org .springframework .core .ResolvableType ;
3434import org .springframework .data .repository .core .RepositoryInformation ;
35+ import org .springframework .data .util .TypeInformation ;
3536import org .springframework .javapoet .ParameterSpec ;
3637import org .springframework .javapoet .TypeName ;
38+ import org .springframework .util .ClassUtils ;
3739
3840/**
3941 * Metadata about an AOT Repository method.
@@ -53,7 +55,7 @@ class MethodMetadata {
5355 MethodMetadata (RepositoryInformation repositoryInformation , Method method ) {
5456
5557 this .returnType = repositoryInformation .getReturnType (method ).toResolvableType ();
56- this .actualReturnType = repositoryInformation .getReturnedDomainTypeInformation (method ). toResolvableType ( );
58+ this .actualReturnType = resolvePrimaryIfNecessary ( repositoryInformation .getReturnedDomainTypeInformation (method ));
5759
5860 Map <String , ParameterSpec > methodArguments = new LinkedHashMap <>();
5961 Map <String , MethodParameter > methodParameters = new LinkedHashMap <>();
@@ -67,6 +69,11 @@ class MethodMetadata {
6769 this .methodParameters = Collections .unmodifiableMap (methodParameters );
6870 }
6971
72+ static ResolvableType resolvePrimaryIfNecessary (TypeInformation <?> type ) {
73+ return type .getType ().isPrimitive () ? ResolvableType .forType (ClassUtils .resolvePrimitiveIfNecessary (type .getType ()))
74+ : type .toResolvableType ();
75+ }
76+
7077 private static void initializeMethodArguments (Method method , ParameterNameDiscoverer nameDiscoverer ,
7178 ResolvableType repositoryInterface , Map <String , ParameterSpec > methodArguments ,
7279 Map <String , MethodParameter > methodParameters ) {
0 commit comments