Переименование имени столбца в операторе SQL SELECT с использованием AS завершается неудачно при использовании внутри тега sql: query;Зачем?JSTL 1.2 - PullRequest
1 голос
/ 08 ноября 2011

Я все утро бился головой о стену, пытаясь понять это.

Я обновляю очень старое приложение и у меня возникают проблемы с запросами на страницах JSP.(Я знаю, я знаю ...)

У меня есть этот запрос втег:

SELECT t1.item AS i1, t2.item AS i2 FROM table t1, table t2

На странице JSP я перебираю набор результатов и отображаю информацию.Однако i1 и i2 не существуют в наборе результатов, но item и item существуют.Похоже, что переименование столбца с использованием синтаксиса AS не выполняется.Кто-нибудь знает почему?

Я использую JSTL 1.2.В моей библиотеке есть банки как 1015 *, так и impl.Я использую контейнер сервлетов JSP 2.1, Servlet 2.5 (Tomcat 6, если быть точным).Я использую (насколько мне известно) правильные пространства имен для этой версии JSTL (<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>, <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>).

Приведенный выше запрос работает правильно при использовании в сервлете JSP 2.0, Servlet 2.4контейнер (Tomcat 5).Я не уверен в версии JSTL, которую он использует.

Запрос выполняется нормально, когда я запускаю его также в MySQL Workbench.

1 Ответ

1 голос
/ 17 ноября 2011

Предложение @ r0ast3d:

"[29 декабря 2007 0:16] Марк Мэтьюз

По многим вменяемым причинам группа экспертов JDBC разъяснила значение слова« имя столбца »:означает исходное имя столбца, а не псевдоним (который может быть получен с помощью метода getColumnLabel () ResultSetMetaData), поэтому наш драйвер JDBC использует это определение при отображении из имени в порядковый номер столбца в ResultSet.get * (String).

Вы можете вернуться к старому поведению, установив для свойства конфигурации "useOldAliasMetadataBehavior" значение "true" с нашим драйвером JDBC, но приложения (и платформы) действительно должны быть изменены для поддержки поведения. "

Виновником был драйвер JDBC.

...