Обходной путь для спящего режима Java для обновления строки в таблицах mySQL с зарезервированными словами в качестве имен столбцов - PullRequest
0 голосов
/ 03 сентября 2018

Мне нужно подключиться к устаревшей базе данных с таблицами с именами столбцов, такими как «like». Наиболее логичным способом исправить это было переименование столбцов, но администратор БД не хочет вносить какие-либо изменения в существующую БД.

Есть ли способ обойти это, чтобы заставить hibernate добавить backtick?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Можете ли вы проверить, попробуйте пометить эти настройки как истинные?

hibernate.globally_quoted_identifiers = true
hibernate.globally_quoted_identifiers_skip_column_definitions = true

Из документов Hibernate, я цитирую: (https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/appendices/Configurations.html)

hibernate.globally_quoted_identifiers (например, true или false (значение по умолчанию)) Все ли идентификаторы базы данных должны быть в кавычках.
hibernate.globally_quoted_identifiers_skip_column_definitions (например, true или false (значение по умолчанию))
Предполагая, что hibernate.globally_quoted_identifiers имеет значение true, это позволяет глобальным кавычкам пропускать определения столбцов, как определено в javax.persistence.Column, javax.persistence.JoinColumn и т. Д., И, хотя это позволяет избежать цитирования определений столбцов из-за глобальных кавычек, они по-прежнему могут явно указываться в кавычках. в аннотации / XML-сопоставления.

0 голосов
/ 03 сентября 2018

Существуют различные обходные пути, в зависимости от контекста:

  • Для файлов сопоставления XML заключите ключевое слово в кавычки 1 .

  • Для аннотаций Hibernate заключите ключевое слово в кавычки.

  • Вы можете указать Hibernate заключить в кавычки все идентификаторы SQL с помощью:

    hibernate.globally_quoted_identifiers=true
    

    в файле настроек Hibernate.

  • В HQL вы можете экранировать псевдонимы через собственный преобразователь; см. https://stackoverflow.com/a/5754720/139985 для примера.

Ссылки:


1 - Различные источники говорят, что используют специфичные для базы данных кавычки или обратные ссылки, которые Hibernate предположительно знает, как переводить. Я не в состоянии проверить это. Оба подхода могут работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...