Я столкнулся с устаревшей системой, написанной для работы с MySQL 5.0, и теперь мне нужно перенести ее на MysQL 5.5 (требование). Я обнаружил, что один столбец был назван maxvalue
, который, похоже, является системным словом в MySQL 5.5. Таким образом, все мои запросы Hibernate, которые включают этот столбец, дают синтаксическую ошибку:
Причина: java.sql.BatchUpdateException: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, чтобы использовать около 'maxvalue
Кажется, что Hibernate не делает автоматически, а заключает в кавычки `вокруг имени поля. Если я извлекаю запрос, в `maxvalue`
он работает правильно в MySQL 5.5.
Я нашел решение, как явно использовать обратные кавычки для конкретного поля/таблицы. Дело в том, что я не уверен, сколько других имен столбцов создаст такую проблему. Есть ли способ заставить Hibernate автоматически заключать в кавычки все имена таблиц/столбцов? (который выдаст действительный SQL, и я не знаю, почему он не делает этого по умолчанию для MySQL).
РЕДАКТИРОВАТЬ: Эта дискуссия почти заставляет меня поверить, что то, что я хочу, невозможно.