ibatis使用iterate嵌套isNotEmpty的时候报错Error getting ordinal list from JavaBean. Cause java.lang.NumberForm

Error getting ordinal list from JavaBean. Cause java.lang.NumberFormatExcept

原因:ibatis的bug导致iterater里面不支持这种写法,升级到2.3以上的版本就可以了。

   <!-- 保存或修改账户清理信息集合 -->  
    <update id="saveOrUpdateAccountCleanList" parameterClass="java.util.ArrayList">
        MERGE INTO AIMS_ACCOUNT_CLEAN AAC 
        USING
        <iterate open="(" close=") A" conjunction="UNION">  
            SELECT
            <!-- 主键为空时候返回字符串,与原类型不匹配,非字符串类型都需要做转换 -->
            DECODE(#list[].cleanId#,NULL,NULL,#list[].cleanId#) AS CLEAN_ID,
            DECODE(#list[].accountId#,NULL,NULL,#list[].accountId#) AS ACCOUNT_ID,
            #list[].accountCode# AS ACCOUNT_CODE,
            #list[].accountName# AS ACCOUNT_NAME,
            #list[].noticeDate# AS NOTICE_DATE,
            DECODE(#list[].needClean#,NULL,NULL,#list[].needClean#) AS NEED_CLEAN,
            #list[].feedbackResult# AS FEEDBACK_RESULT,
            #list[].undoReason# AS UNDO_REASON,
            #list[].feedbackDate# AS FEEDBACK_DATE,
            #list[].aacCreateTime# AS AAC_CREATE_TIME,
            #list[].aacUpdateTime# AS AAC_UPDATE_TIME,
            #list[].aacCreatePerson# AS AAC_CREATE_PERSON,
            #list[].aacUpdatePerson# AS AAC_UPDATE_PERSON,
            #list[].cleanStep# AS CLEAN_STEP
            FROM DUAL
        </iterate>
        ON (A.CLEAN_ID = AAC.CLEAN_ID)
        WHEN MATCHED THEN
            UPDATE SET
            AAC.AAC_UPDATE_TIME = A.AAC_UPDATE_TIME
        <isNotEqual compareValue="" property="list[].accountId" prepend=",">
            AAC.ACCOUNT_ID = A.ACCOUNT_ID
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].accountName" prepend=",">
            AAC.ACCOUNT_CODE = A.ACCOUNT_CODE
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].accountName" prepend=",">
            AAC.ACCOUNT_NAME = A.ACCOUNT_NAME
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].noticeDate" prepend=",">
            AAC.NOTICE_DATE = A.NOTICE_DATE
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].needClean" prepend=",">
            AAC.NEED_CLEAN = A.NEED_CLEAN
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].feedbackResult" prepend=",">
            AAC.FEEDBACK_RESULT = A.FEEDBACK_RESULT
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].undoReason" prepend=",">
            AAC.UNDO_REASON = A.UNDO_REASON
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].feedbackDate" prepend=",">
            AAC.FEEDBACK_DATE = A.FEEDBACK_DATE
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].aacCreateTime" prepend=",">
            AAC.AAC_CREATE_TIME = A.AAC_CREATE_TIME
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].aacCreatePerson" prepend=",">
            AAC.AAC_CREATE_PERSON = A.AAC_CREATE_PERSON
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].aacUpdatePerson" prepend=",">
            AAC.AAC_UPDATE_PERSON = A.AAC_UPDATE_PERSON
        </isNotEqual>
        <isNotEqual compareValue="" property="list[].cleanStep" prepend=",">
            AAC.CLEAN_STEP = A.CLEAN_STEP
        </isNotEqual>

        <isNotEmpty prepend="," property="list[].accountCode">
                AAC.ACCOUNT_CODE = A.ACCOUNT_CODE
            </isNotEmpty>
            <isNotEmpty prepend="," property="list[].accountName">
                AAC.ACCOUNT_NAME = A.ACCOUNT_NAME
            </isNotEmpty>
            <isNotEmpty prepend="," property="list[].noticeDate">
                AAC.NOTICE_DATE = A.NOTICE_DATE
            </isNotEmpty>
            <isNotEmpty prepend="," property="list[].needClean">
                AAC.NEED_CLEAN = A.NEED_CLEAN
            </isNotEmpty>
            <isNotEmpty prepend="," property="list[].feedbackResult">
                AAC.FEEDBACK_RESULT = A.FEEDBACK_RESULT
            </isNotEmpty>
            <isNotEmpty prepend="," property="list[].undoReason">
                AAC.UNDO_REASON = A.UNDO_REASON
            </isNotEmpty>
            <isNotEmpty prepend="," property="list[].feedbackDate">
                AAC.FEEDBACK_DATE = A.FEEDBACK_DATE
            </isNotEmpty>
            <isNotEmpty prepend="," property="list[].aacCreateTime">
                AAC.AAC_CREATE_TIME = A.AAC_CREATE_TIME
            </isNotEmpty>
            <isNotEmpty prepend="," property="list[].aacCreatePerson">
                AAC.AAC_CREATE_PERSON = A.AAC_CREATE_PERSON
            </isNotEmpty>
            <isNotEmpty prepend="," property="list[].aacUpdatePerson">
                AAC.AAC_UPDATE_PERSON = A.AAC_UPDATE_PERSON
            </isNotEmpty>
            <isNotEmpty prepend="," property="list[].cleanStep">
                AAC.CLEAN_STEP = A.CLEAN_STEP
            </isNotEmpty>
        WHEN NOT MATCHED THEN 
            INSERT (
            CLEAN_ID,
            ACCOUNT_ID,
            ACCOUNT_CODE,
            ACCOUNT_NAME,
            NOTICE_DATE,
            NEED_CLEAN,
            FEEDBACK_RESULT,
            UNDO_REASON,
            FEEDBACK_DATE,
            AAC_CREATE_TIME,
            AAC_UPDATE_TIME,
            AAC_CREATE_PERSON,
            AAC_UPDATE_PERSON,
            CLEAN_STEP
            ) VALUES (
            AIMS_ACCOUNT_CLEAN_SEQ.NEXTVAL,
            A.ACCOUNT_ID,
            A.ACCOUNT_CODE,
            A.ACCOUNT_NAME,
            A.NOTICE_DATE,
            A.NEED_CLEAN,
            A.FEEDBACK_RESULT,
            A.UNDO_REASON,
            A.FEEDBACK_DATE,
            A.AAC_CREATE_TIME,
            A.AAC_UPDATE_TIME,
            A.AAC_CREATE_PERSON,
            A.AAC_UPDATE_PERSON,
            A.CLEAN_STEP
            )    
    </update>

参考:https://bbs.csdn.net/topics/230003000

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值