Автоматический выход зарезервированного слова для таблиц Hibernate и столбцов

Я пытаюсь использовать, каждый В спящем режиме, отображаясь для нескольких различных баз данных: H2, Oracle, MySql.

Каждая база данных имеет различный список зарезервированных слов.

Я хотел бы, в спящем режиме для автоматического выхода из зарезервированных слов.

Я знаю, что могу:

  • используйте обратные галочки для принуждения выхода (выйдите из всего только для сейфа),
  • измените все идентификаторы, таким образом, они - конечно, не ключевые слова в любой базе данных (сделайте их ужасными),
  • свяжите схему с определенным набором баз данных, выходя из объединения ключевых слов (повредится, если я добавлю новую базу данных к соединению),

Существует ли более изящное решение?

23
задан Pascal Thivent 3 August 2010 в 04:34
поделиться

1 ответ

AFAIK, Hibernate не поддерживает список зарезервированных ключевых слов (для каждой базы данных), поэтому я думаю, вам следует посмотреть на экранирование идентификатора базы данных.

Если вы используете Hibernate 3.5+, попробуйте hibernate.globally_quoted_identifiers = true , чтобы процитировать все идентификаторы базы данных (это то, что они добавили для JPA 2.0, см. Раздел 2.13 Именование объектов базы данных спецификации для JPA способ активировать это, если вы используете JPA).

До версии 3.5 Hibernate не предлагал никаких параметров конфигурации для глобального экранирования. Реализация пользовательской NamingStrategy для прозрачного исключения всего будет рекомендуемым способом.

См. Также

31
ответ дан 29 November 2019 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: