{"record":{"id":"a51fd6c02961ce88","repo":"mybatis/mybatis-3","slug":"error-creating-sqlsource-for-sqlprovider-cause","errorCode":null,"errorMessage":"Error creating SqlSource for SqlProvider.  Cause: {cause}","messagePattern":"Error creating SqlSource for SqlProvider\\.  Cause: (.+?)","errorType":"exception","errorClass":"BuilderException","httpStatus":null,"severity":"error","filePath":"src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java","lineNumber":134,"sourceCode":"      if (candidateProviderMethod == null) {\n        candidateProviderMethodName = candidateProviderMethodName.length() == 0 ? \"provideSql\"\n            : candidateProviderMethodName;\n        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()","sourceCodeStart":116,"sourceCodeEnd":152,"githubUrl":"https://github.com/mybatis/mybatis-3/blob/008069adb1b089579b5dcba87ee591908b263274/src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java#L116-L152","documentation":"Error \"Error creating SqlSource for SqlProvider.  Cause: {cause}\" thrown in mybatis/mybatis-3.","triggerScenarios":"Thrown at src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java:134 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the nested cause for the underlying reflection error (missing method, wrong signature, or inaccessible class).","Make sure the provider class has a public no-arg constructor and the provider method is accessible.","Verify the provider method signature matches the mapper method parameters or accepts ProviderContext."],"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-15T22:17:37.221Z"}