{"record":{"id":"2e11cad557e09ead","repo":"mybatis/mybatis-3","slug":"error-creating-sqlsource-for-sqlprovider-method-2e11ca","errorCode":null,"errorMessage":"Error creating SqlSource for SqlProvider. Method '{methodName}' not found in SqlProvider '{providerTypeName}'.","messagePattern":"Error creating SqlSource for SqlProvider\\. Method '(.+?)' not found in SqlProvider '(.+?)'\\.","errorType":"exception","errorClass":"BuilderException","httpStatus":null,"severity":"error","filePath":"src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java","lineNumber":137,"sourceCode":"        for (Method m : this.providerType.getMethods()) {\n          if (candidateProviderMethodName.equals(m.getName())\n              && CharSequence.class.isAssignableFrom(m.getReturnType())) {\n            if (candidateProviderMethod != null) {\n              throw new BuilderException(\"Error creating SqlSource for SqlProvider. Method '\"\n                  + candidateProviderMethodName + \"' is found multiple in SqlProvider '\" + this.providerType.getName()\n                  + \"'. Sql provider method can not overload.\");\n            }\n            candidateProviderMethod = m;\n          }\n        }\n      }\n    } catch (BuilderException e) {\n      throw e;\n    } catch (Exception e) {\n      throw new BuilderException(\"Error creating SqlSource for SqlProvider.  Cause: \" + e, e);\n    }\n    if (candidateProviderMethod == null) {\n      throw new BuilderException(\"Error creating SqlSource for SqlProvider. Method '\" + candidateProviderMethodName\n          + \"' not found in SqlProvider '\" + this.providerType.getName() + \"'.\");\n    }\n    this.providerMethod = candidateProviderMethod;\n    this.paramNameResolver = new ParamNameResolver(configuration, this.providerMethod, mapperType);\n    this.providerMethodParameterTypes = this.providerMethod.getParameterTypes();\n\n    ProviderContext candidateProviderContext = null;\n    Integer candidateProviderContextIndex = null;\n    for (int i = 0; i < this.providerMethodParameterTypes.length; i++) {\n      Class<?> parameterType = this.providerMethodParameterTypes[i];\n      if (parameterType == ProviderContext.class) {\n        if (candidateProviderContext != null) {\n          throw new BuilderException(\n              \"Error creating SqlSource for SqlProvider. ProviderContext found multiple in SqlProvider method (\"\n                  + this.providerType.getName() + \".\" + providerMethod.getName()\n                  + \"). ProviderContext can not define multiple in SqlProvider method argument.\");\n        }\n        candidateProviderContext = new ProviderContext(mapperType, mapperMethod, configuration.getDatabaseId());","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/mybatis/mybatis-3/blob/008069adb1b089579b5dcba87ee591908b263274/src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java#L119-L155","documentation":"Error \"Error creating SqlSource for SqlProvider. Method '{methodName}' not found in SqlProvider '{providerTypeName}'.\" thrown in mybatis/mybatis-3.","triggerScenarios":"Thrown at src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java:137 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add the reported method to the SqlProvider class, or fix the method name referenced in the provider annotation.","If the provider method should be resolved by name convention, rename it to match the mapper method name."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"008069adb1b089579b5dcba87ee591908b263274","analyzedAt":"2026-08-14T13:07:10.264Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}