Nano Hash - криптовалюты, майнинг, программирование

jsp jstl sql странное поведение, как в mysql

В mysql у меня есть хранимая процедура, которая имеет sql, например:

select firstname as i_firstname , lastname as i_lastname from roleuser 
where user_id = uid ;

Я использую код jstl для получения значений: -

<sql:query var="comm_codes" dataSource="jdbc/myDatasource">
    call sp_select_username(?);
    <sql:param>${user_id}</sql:param>
</sql:query>

<c:forEach var="rows" items="${comm_codes.rows}">
    ${rows.i_firstname} ${rows.i_lastname}
</c:forEach>

Но этот код ничего не возвращает, но когда я заменяю приведенный выше код ${rows.i_firstname} на ${rows.firstname}, я получаю правильные значения.

Что-то не так с jstl, это воспроизводимо или моя вина здесь...

Вопрос также опубликован здесь и здесь

спасибо


  • Что происходит, когда вы делаете это? <c:forEach var="columnName" items="${comm_codes.columnNames}"> <c:out value="${columnName}"/> </c:forEach> 15.02.2011
  • имя фамилия (псевдонимов там нет...) 15.02.2011
  • Можете ли вы для тестирования просто вызвать sql напрямую, а не из хранимой процедуры? Просто попробуйте указать sql в теге sql. 15.02.2011
  • Хорошо звучит как какой-то странный баг. Какие версии mysql, драйвера jdbc, tomcat вы используете? Мы можем выполнить поиск JIRA, чтобы узнать, есть ли какие-либо известные ошибки с псевдонимами sql. 16.02.2011
  • mysql 5.1.44, jstl1.1, стеклянная рыба 3.0, соединитель jdbc mysql 5.1.12 16.02.2011

Ответы:


1

Я знаю, что это старый пост, но я тоже столкнулся с этой проблемой. Это обсуждается здесь: http://forums.mysql.com/read.php?39,432843,432862#msg-432862

Важно отметить, что плакат на форуме mysql гласит

ResultSetMetaData.getColumnName() вернет фактическое имя столбца, если оно существует.

Это обеспечивает обходной путь — предотвращает существование имени столбца, поэтому необходимо использовать псевдоним. Например, хранимая процедура оригинального плаката может быть изменена, чтобы

select concat(first name,'') as i_firstname , 
       concat(lastname,'') as i_lastname from roleuser 
where user_id = uid ; 

В этом случае исходный столбец теперь неизвестен, и используется псевдоним. Я проверил это на своей системе в аналогичной ситуации, и это сработало. Точно так же, если вам нужно использовать псевдоним для int, вы можете попробовать SELECT (id+0) AS id_alias. Я уверен, что большинство типов столбцов имеют аналогичные решения. Надеюсь это поможет.

24.01.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..