{"record":{"id":"981d64aa2c5a423f","repo":"mybatis/mybatis-3","slug":"error-resolving-resultsettype-cause-cause","errorCode":null,"errorMessage":"Error resolving ResultSetType. Cause: {cause}","messagePattern":"Error resolving ResultSetType\\. Cause: (.+?)","errorType":"exception","errorClass":"BuilderException","httpStatus":null,"severity":"error","filePath":"src/main/java/org/apache/ibatis/builder/BaseBuilder.java","lineNumber":79,"sourceCode":"\n  protected Set<String> stringSetValueOf(String value, String defaultValue) {\n    value = value == null ? defaultValue : value;\n    return new HashSet<>(Arrays.asList(value.split(\",\")));\n  }\n\n  protected JdbcType resolveJdbcType(String alias) {\n    try {\n      return alias == null ? null : JdbcType.valueOf(alias);\n    } catch (IllegalArgumentException e) {\n      throw new BuilderException(\"Error resolving JdbcType. Cause: \" + e, e);\n    }\n  }\n\n  protected ResultSetType resolveResultSetType(String alias) {\n    try {\n      return alias == null ? null : ResultSetType.valueOf(alias);\n    } catch (IllegalArgumentException e) {\n      throw new BuilderException(\"Error resolving ResultSetType. Cause: \" + e, e);\n    }\n  }\n\n  protected ParameterMode resolveParameterMode(String alias) {\n    try {\n      return alias == null ? null : ParameterMode.valueOf(alias);\n    } catch (IllegalArgumentException e) {\n      throw new BuilderException(\"Error resolving ParameterMode. Cause: \" + e, e);\n    }\n  }\n\n  protected Object createInstance(String alias) {\n    Class<?> clazz = resolveClass(alias);\n    try {\n      return clazz == null ? null : clazz.getDeclaredConstructor().newInstance();\n    } catch (Exception e) {\n      throw new BuilderException(\"Error creating instance. Cause: \" + e, e);\n    }","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/mybatis/mybatis-3/blob/008069adb1b089579b5dcba87ee591908b263274/src/main/java/org/apache/ibatis/builder/BaseBuilder.java#L61-L97","documentation":"BaseBuilder.resolveResultSetType() maps a string like resultSetType=\"FORWARD_ONLY\" to the java.sql.ResultSetType-compatible enum via valueOf(). An unrecognized or misspelled value aborts mapper/config parsing with this BuilderException.","triggerScenarios":"resultSetType=\"scroll insensitive\" or a vendor-specific scroll mode instead of one of FORWARD_ONLY, SCROLL_INSENSITIVE, SCROLL_SENSITIVE; wrong case like \"forward_only\".","commonSituations":"Copying JDBC constant names from driver docs; hand-editing mapper XML scroll settings for large-result streaming.","solutions":["Use exactly FORWARD_ONLY, SCROLL_INSENSITIVE, or SCROLL_SENSITIVE (upper case)","If you need vendor scroll behavior, configure it on the driver/statement level instead"],"exampleFix":"<!-- before -->\n<select id=\"x\" resultSetType=\"SCROLL\">...</select>\n<!-- after -->\n<select id=\"x\" resultSetType=\"SCROLL_INSENSITIVE\">...</select>","handlingStrategy":"validation","validationCode":"static final Set<String> VALID = Set.of(\"FORWARD_ONLY\", \"SCROLL_INSENSITIVE\", \"SCROLL_SENSITIVE\");\n// validate before writing config or generating XML","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only the three standard scroll constants are accepted; check them against java.sql.ResultSet constants","Validate generated XML in CI by parsing with a test SqlSessionFactory"],"tags":["mybatis","builder","result-set-type","configuration"],"backgroundTag":null,"analyzedSha":"008069adb1b089579b5dcba87ee591908b263274","analyzedAt":"2026-08-14T13:07:10.264Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}