Добавьте `backticks` к именам столбцов в спящем режиме - PullRequest
0 голосов
/ 10 июня 2018

Рассмотрим запрос

INSERT INTO order (id, key, value) VALUES (?, ?, ?);

В приведенном выше запросе есть синтаксические ошибки MySQL, поскольку order и key являются ключевыми словами в MySQL.Таким образом, решение было бы добавить обратные пометки в запросе.

INSERT INTO `order` (id, `key`, value) VALUES (?, ?, ?);

Hibernate достаточно глуп, чтобы сделать это автоматически.Согласно этот ответ путем добавления следующего свойства в файл конфигурации hibernate решает проблему с именем таблицы.

<property name="hibernate.globally_quoted_identifiers">true</property>

Но это только добавляет обратные метки к имени базы данных и имени таблицы,Проблема все еще существует с именем столбца.

Как добавить обратные метки ко всем именам столбцов?


  • Версия Hibernate: 3.6.10.Final
  • Версия MySQL: 5.7
  • hibernate.dialect: org.hibernate.dialect.MySQL5Dialect
  • Версия JDK: 1.8 (если это должноделать с чем угодно)

1 Ответ

0 голосов
/ 10 июня 2018

Я нашел способ добавить обратные метки к именам столбцов в hibernate.

  1. Откройте файл xml (TableName.hbm.xml) относительно сопоставленного файла pojo.
  2. Найдите свойство для соответствующего столбца.

    <property name="key" type="string">
        <column name="key" />
    </property>
    
  3. Окружите имя столбца квадратными скобками.

    <property name="key" type="string">
        <column name="[key]" />
    </property>
    

Но это кропотливый процесс, так как вам придется сделать это для всех столбцов по одному для всех ключевых слов MySQL .Лучше всего избегать добавления ключевых слов MySQL в качестве имени базы данных, таблицы или столбца.

Ссылки:

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