Я заметил следующее различие, но не видел, что оно зарегистрировало где угодно. Я задаюсь вопросом, заметили ли другие то же самое или могут указать на меня на некоторую документацию, который доказывает то же.
ENV:-
Oracle 11g, JDK 1.6, iBatis, PL/SQL
Сценарий:-
ojdbc14.jar: если pl/sql возвращает переменную типа DATE
и я пытаюсь поместить это в java.sql. Переменная даты затем все хорошо работает. Пример:
Date annualDate = (Date) map.get("exam_date");
ojdbc6.jar: если pl/sql возвращает переменную типа DATE
и я пытаюсь поместить это в java.sql. Переменная даты затем я получаю исключение:
java.lang.ClassCastException: java.sql.Timestamp cannot be cast to java.sql.Date
На самом деле ojdbc14.jar ничего не говорит о реальной версии драйвера (см. Загрузки драйвера JDBC ), за исключением того, что он предшествует Oracle 11g. В такой ситуации вам следует указать точную версию.
В любом случае, я думаю, вы найдете объяснение в Что происходит с DATE и TIMESTAMP? Короче говоря, они изменили поведение в драйверах 9.2, а затем снова в драйверах 11.1.
Это может объяснить различия, с которыми вы сталкиваетесь (и я предлагаю использовать самую последнюю версию, то есть драйверы 11.2).
"14" и "6" в названиях этих драйверов относятся к JVM, для которой они были написаны. Если вы все еще используете JDK 1.4, я бы сказал, что у вас серьезная проблема и вам нужно обновиться. Срок службы JDK 1.4 давно истек. В ней даже не было дженериков! JDK 6 u21 - это текущий стандарт производства от Oracle/Sun. Я бы рекомендовал перейти на него, если вы еще не перешли.