MySQL поле принять решение не может быть решена псевдоним JDBC

С проектом Spring JDBC, то для вызова базы данных конкретных через JDBC интерфейсов, класс реализации ResultSetMetaData для извлечения возвращает базу данных набора результатов.

При разработке проекта, показало, что использование псевдонимов в MySQL никоим образом не были решены должным образом, это означает, что, в дополнение к полю дается псевдоним не в силе, взять поле оригинальное имя поля. Так, например, user_name специально, чтобы индивидуальный названный user_name_old, конечный результат не возвращается псевдоним user_name_old, но ранее известный как user_name.

Код отслеживания найдено ResultSetMetaData.getColumnName (INT столбца) наличие некоторого специфики процесса логика, реализованный в JDBC в MySQL.

общественная Строка getColumnName ( ИНТ столбец) бросает SQLException {
  если ( это .useOldAliasBehavior) { // ложный 
    возврат  этого .getField (колонка) .getName ();
  } Еще {
    Имя Строка = это .getField (столбец) .getNameNoAliases (); // 取非别名
    возвращение имя! = NULL && name.length () == 0? это .getField (колонка) .getName (): название;
  }
}

Поскольку this.useOldAliasBehavior свойство является ложным, поэтому окончательное принятие еще логика также метод левого Field.getNameNoAliases ().

общественности Строка getNameNoAliases () бросает SQLException {
  если ( это .useOldNameMetadata) { // ложное 
    возвращение  этого .getName ();
  } Еще {
    вернуть  это .connection! = NULL && это .connection.versionMeetsMinimum (4, 1, 0)? это .getOriginalName (): это .getName ();
  }
}

Таким образом, мы, наконец, найти проблему к свойству this.useOldAliasBehavior, который может быть сконфигурирован с помощью JDBC драйверов адреса.

useOldAliasMetadataBehavior = верно

Полный адрес привода должен выглядеть следующим образом:

JDBC: MySQL: // ? локальный / TestDB useUnicode = истина и characterEncoding = UTF-8 & zeroDateTimeBehavior = convertToNull & useOldAliasMetadataBehavior = верно

Добавить в собственность, вы обнаружите, что эта проблема была решена.

 

«Я не могу грустно сидеть вами.»

рекомендация

отwww.cnblogs.com/yanggb/p/11427715.html