{"record":{"id":"d8fae78ef9526c11","repo":"mybatis/mybatis-3","slug":"error-creating-sqlsource-for-sqlprovider-provider","errorCode":null,"errorMessage":"Error creating SqlSource for SqlProvider. ProviderContext found multiple in SqlProvider method ({providerTypeName}.{methodName}). ProviderContext can not define multiple in SqlProvider method argument.","messagePattern":"Error creating SqlSource for SqlProvider\\. ProviderContext found multiple in SqlProvider method \\((.+?)\\.(.+?)\\)\\. ProviderContext can not define multiple in SqlProvider method argument\\.","errorType":"exception","errorClass":"BuilderException","httpStatus":null,"severity":"error","filePath":"src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java","lineNumber":150,"sourceCode":"      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());\n        candidateProviderContextIndex = i;\n      }\n    }\n    this.providerContext = candidateProviderContext;\n    this.providerContextIndex = candidateProviderContextIndex;\n  }\n\n  @Override\n  public BoundSql getBoundSql(Object parameterObject) {\n    SqlSource sqlSource = createSqlSource(parameterObject);\n    return sqlSource.getBoundSql(parameterObject);\n  }\n","sourceCodeStart":132,"sourceCodeEnd":168,"githubUrl":"https://github.com/mybatis/mybatis-3/blob/008069adb1b089579b5dcba87ee591908b263274/src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java#L132-L168","documentation":"Error \"Error creating SqlSource for SqlProvider. ProviderContext found multiple in SqlProvider method ({providerTypeName}.{methodName}). ProviderContext can not define multiple in SqlProvider method argument.\" thrown in mybatis/mybatis-3.","triggerScenarios":"Thrown at src/main/java/org/apache/ibatis/builder/annotation/ProviderSqlSource.java:150 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove the extra ProviderContext parameter so the provider method declares at most one.","If multiple contexts are needed, pass the required data through regular method parameters instead of multiple ProviderContext arguments."],"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"}