{"record":{"id":"57acf702d15ad910","repo":"quarkusio/quarkus","slug":"method-method-of-repository-repository-has-in","errorCode":null,"errorMessage":"Method ${method} of Repository ${repository}has invalid parameters - only a single parameter of type Pageable can be specified","messagePattern":"Method (.+?) of Repository (.+?)has invalid parameters - only a single parameter of type Pageable can be specified","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"extensions/spring-data-jpa/deployment/src/main/java/io/quarkus/spring/data/deployment/generate/DerivedMethodsAdder.java","lineNumber":115,"sourceCode":"                continue;\n            }\n\n            Type returnType = method.returnType();\n\n            List<Type> parameters = method.parameterTypes();\n            String[] parameterTypesStr = new String[parameters.size()];\n            List<Integer> queryParameterIndexes = new ArrayList<>(parameters.size());\n            Integer pageableParameterIndex = null;\n            Integer sortParameterIndex = null;\n            Integer dynamicProjectionParameterIndex = null;\n            for (int i = 0; i < parameters.size(); i++) {\n                Type paramType = parameters.get(i);\n                DotName parameterType = paramType.name();\n                parameterTypesStr[i] = parameterType.toString();\n                if (DotNames.SPRING_DATA_PAGEABLE.equals(parameterType)\n                        || DotNames.SPRING_DATA_PAGE_REQUEST.equals(parameterType)) {\n                    if (pageableParameterIndex != null) {\n                        throw new IllegalArgumentException(\"Method \" + method.name() + \" of Repository \" + repositoryClassInfo\n                                + \"has invalid parameters - only a single parameter of type\" + DotNames.SPRING_DATA_PAGEABLE\n                                + \" can be specified\");\n                    }\n                    pageableParameterIndex = i;\n                } else if (DotNames.SPRING_DATA_SORT.equals(parameterType)) {\n                    if (sortParameterIndex != null) {\n                        throw new IllegalArgumentException(\"Method \" + method.name() + \" of Repository \" + repositoryClassInfo\n                                + \"has invalid parameters - only a single parameter of type\" + DotNames.SPRING_DATA_SORT\n                                + \" can be specified\");\n                    }\n                    sortParameterIndex = i;\n                } else if (isDynamicProjectionParameter(paramType, method)) {\n                    if (dynamicProjectionParameterIndex != null) {\n                        throw new IllegalArgumentException(\"Method \" + method.name() + \" of Repository \" + repositoryClassInfo\n                                + \"has invalid parameters - only a single dynamic projection parameter of type \"\n                                + DotNames.CLASS + \" can be specified\");\n                    }\n                    dynamicProjectionParameterIndex = i;","sourceCodeStart":97,"sourceCodeEnd":133,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/spring-data-jpa/deployment/src/main/java/io/quarkus/spring/data/deployment/generate/DerivedMethodsAdder.java#L97-L133","documentation":"Derived (method-name based) repository methods accept at most one paging parameter. A method signature that declares two or more parameters of type Pageable (or PageRequest) is rejected at build time by DerivedMethodsAdder.add because the generated code cannot decide which Pageable to apply.","triggerScenarios":"Declaring a derived query method like List<User> findByName(String n, Pageable p1, Pageable p2); the second Pageable/PageRequest parameter triggers the throw.","commonSituations":"Copy-paste signature errors; trying to pass page info plus a second 'pageable-like' object; refactoring where a Pageable was duplicated.","solutions":["Remove the duplicate Pageable/PageRequest parameter, keeping only one","If extra paging-like data is needed, fold it into a single Pageable via PageRequest.of(page, size, sort)","Move the second paging parameter out of the repository method signature","If the method is not derived, give it an explicit @Query and handle parameters manually"],"exampleFix":"// before\nList<User> findByName(String name, Pageable p1, Pageable p2);\n\n// after\nList<User> findByName(String name, Pageable p);","handlingStrategy":"validation","validationCode":"long pageableCount = Arrays.stream(m.getParameterTypes())\n    .filter(t -> Pageable.class.isAssignableFrom(t) || PageRequest.class.isAssignableFrom(t)).count();","typeGuard":null,"tryCatchPattern":null,"preventionTips":["At most one Pageable per repository method","Carry sorting inside Pageable instead of extra parameters","Review derived method signatures for duplicate paging params"],"tags":["quarkus","spring-data-jpa","build-time","pageable","method-signature"],"backgroundTag":"invalid-repository-method-signature","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}