Migration java.sql.SQLException:列索引无效(从iBATIS迁移到MyBatis时)

Migration java.sql.SQLException:列索引无效(从iBATIS迁移到MyBatis时),migration,mybatis,ibatis,wildfly-10,Migration,Mybatis,Ibatis,Wildfly 10,在将应用程序从iBATIS迁移到MyBatis时遇到此问题 org.mybatis.spring.MyBatisSystemException:嵌套异常为org.apache.ibatis.type.TypeException:无法设置映射参数:ParameterMapping{property='userDefRole',mode=null,javaType=class java.lang.String,jdbcType=VARCHAR,numericScale=null,resultMapI

在将应用程序从iBATIS迁移到MyBatis时遇到此问题

org.mybatis.spring.MyBatisSystemException:嵌套异常为org.apache.ibatis.type.TypeException:无法设置映射参数:ParameterMapping{property='userDefRole',mode=null,javaType=class java.lang.String,jdbcType=VARCHAR,numericScale=null,resultMapId='null',jdbcTypeName='null',expression='null'}。原因:org.apache.ibatis.type.TypeException:使用JdbcType VARCHAR为参数#1设置非null时出错。尝试为此参数设置其他JdbcType或其他配置属性。原因:java.sql.SQLException:列索引无效

参数映射

<parameterMap type="userDefVO" id="userDefVO">

        <parameter property="userDefRole" javaType="string"
            jdbcType="VARCHAR" />
        <parameter property="userShortRole" javaType="string"
            jdbcType="VARCHAR"  />
        <parameter property="userDefRoleDesc" javaType="string"
            jdbcType="VARCHAR"  />
        <parameter property="sysRole" javaType="string"
            jdbcType="VARCHAR"  />

    </parameterMap>

请帮助我了解此代码中的错误以及导致无效列索引异常的原因

在不使用parameterMap的情况下尝试。mybatis中不推荐使用parameterMap。还有,您使用的是什么版本的mybatis?非常感谢您的输入。是的,使用parameterType解决了问题,我使用了3.4.4 mybatis versionOk,很高兴它能工作。您可以删除移植到MyBatis的任何其他映射程序的parameterMap
<select id="fetchUserDefRole" resultMap="defRoleVO"
        parameterMap="userDefVO">
        SELECT * FROM PARTY_ROLE_SETUP 
        <where>

            <if test='userDefRole != null and userDefRole != "" '>

                and USER_DEF_ROLE like '%' || #{userDefRole} || '%'

            </if>
            <if test='userShortRole != null and userShortRole != "" '>

                and USER_SHORT_ROLE = #{userShortRole}

            </if>
            <if test='userDefRoleDesc != null and userDefRoleDesc != "" '>

                and USER_DEF_ROLE_DESC like '%' || #{userDefRoleDesc} || '%'

            </if>
            <if test='sysRole != null and sysRole != "" '>

                and SYSTEM_ROLE  = #{sysRole}

            </if>

        </where>

    </select>
USER_DEF_ROLE      NOT NULL VARCHAR2(10)  
USER_SHORT_ROLE             VARCHAR2(10)  
USER_DEF_ROLE_DESC          VARCHAR2(120) 
SYSTEM_ROLE                 VARCHAR2(10)