java.lang.ClassCastException: oracle.jdbc.driver.OracleDatabaseMetaData не может быть передан oracle.jdbc.OracleDatabaseMetaData

#java #oracle #mybatis

#java #Oracle #mybatis

Вопрос:

У меня есть это исключение с mybatis

— Причина: java.lang.ClassCastException: oracle.jdbc.driver.OracleDatabaseMetaData не может быть передан oracle.jdbc.OracleDatabaseMetaData; вложенным исключением является com.ibatis.common.jdbc.exception.NestedSQLException:
— Ошибка произошла в sqlMaps/WorkSession.xml .
— Ошибка произошла при применении карты результатов.
— Проверьте getChangeSeller-AutoResultMap.
— Проверьте отображение результатов для свойства ‘IS_RESTRICTED’.
— Причина: java.lang.ClassCastException: oracle.jdbc.driver.OracleDatabaseMetaData не может быть передан oracle.jdbc.OracleDatabaseMetaData

И это моя рабочая сессия sqlMap.getChangeSeller :

 <select id="getChangeSeller" parameterMap="getChangeSellerParam" resultClass="Boolean">
      
  select decode(count(*),0,0,1) is_restricted
        from users u inner join user_sdp us on u.user_id = us.user_id 
        inner join sdp s on s.sdp_id = us.sdp_id
        where u.user_id = ? and s.sdp_id = ? and s.self_cash_cycle_only = 1 and u.self_cash_cycle_only =1

</select>
  

Комментарии:

1. У вас где-то есть несоответствия версий с вашими зависимостями.

2. Я использую ojdbc 7, ibatis-2.3.0 и jdk 7.

3. @kh123 опубликуйте всю трассировку стека, пожалуйста.

4. На самом деле, это хуже, чем просто несоответствие версий. Мне кажется, что у вас есть две копии одного и того же типа… это означает, что класс был загружен двумя отдельными загрузчиками классов. Я предполагаю, что у вас есть драйвер Oracle как в папке общей библиотеки веб-контейнера (т. Е. weblogic), так и в WAR-файле веб-приложения. Или что-то в этом роде. (Но я не знаком с MyBatis ….)