Вложенное исключение - com.ibatis.common.jdbc.exception.NestedSQLException: - PullRequest
0 голосов
/ 03 марта 2019

Я новичок в Java, я пытаюсь вызвать хранимую процедуру из Java.

Я получаю это исключение для этого кода

@SuppressWarnings("unchecked")
List<Object> queryForList(String procName, Map<String, Object> map, CommonVO commonVO) {
    List<Object> resultSetList = null;
    Date connectionAttemptStartDate = null;
    Date cidbQueryStartDate = null;
    List<String> jndiNameList =null;
    String jndiName = null;
    try {
        resultSetList = super.queryForList(procName, map);

    }catch(Exception e) {
        isError = true;
        //exception = e;
        System.out.println(e.getMessage());
        exception=ExceptionUtils.validateCreateCIDBException(e);
    }
    return resultSetList;
 }

Мой XML файл здесь

<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="SP">
    <parameterMap id="objectParameters" class="java.util.Map">      
        <parameter property="valueAddedOfferList" jdbcType="VALUE_ADDED_OFFER_LIST" typeName="VALUE_ADDED_OFFER_LIST" typeHandler="com.bam.vision.dao.db.typehandler.ValueAddedOfferListTypeHandlerCallback" mode="OUT" />
        <parameter property="errorCode" jdbcType="INTEGER" javaType="java.lang.String" mode="OUT"/>
        <parameter property="errorMessage" jdbcType="CHAR" javaType="java.lang.String" mode="OUT"/>
    </parameterMap>
    <procedure id="retrieve_value_added_offer" parameterMap="objectParameters" timeout="2">
        {call retrieve_value_added_offer(?,?,?)}
    </procedure>
</sqlMap>

Получение исключения как здесь

--- Cause: java.lang.ClassCastException: java.math.BigDecimal    incompatible with java.lang.String; nested exception is     com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in retrieve_value_added_offer.xml.  
--- The error occurred while applying a parameter map.  
--- Check the SP.objectParameters.  
--- Check the output parameters (retrieval of output parameters failed).  
--- Cause: java.lang.ClassCastException: java.math.BigDecimal incompatible with java.lang.String

1 Ответ

0 голосов
/ 03 марта 2019

Эта строка в вашем XML-файле мне кажется подозрительной:

    <parameter property="errorCode" jdbcType="INTEGER" javaType="java.lang.String" mode="OUT"/>

Какой тип параметра кода errorCode в вашей хранимой процедуре?

У вас есть jdbcType="INTEGER", которыйпредполагает, что это число, но у вас также есть javaType="java.lang.String", что говорит о том, что это строка.Очевидно, что это не может быть и то и другое.Вы не включили объявление вашей хранимой процедуры, поэтому невозможно определить, какая она на самом деле.

Если ваш код ошибки целочисленный, попробуйте изменить javaType="java.lang.String" на javaType="java.lang.Integer" (или если это не удастся, javaType="java.math.BigDecimal" вместо).Если ваш код ошибки является строкой, измените jdbcType="INTEGER" на jdbcType="STRING".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...