Сущность Spring JPA и неподдерживаемый хэш-символ в имени столбца под h2 - PullRequest
0 голосов
/ 17 октября 2018

Позвольте мне показать вам проблему в следующих сценариях:

У меня есть сущность с именем столбца VERSION# с суффиксом, похожим на хеш, и я хотел бы провести некоторое тестирование с этой сущностью в базе данных h2.Столбец взят из официальной таблицы словаря Oracle USER_TYPE_VERSIONS, поэтому его нельзя изменить.

Однако h2 не поддерживает такие имена столбцов и, следовательно, не работает во время выполнения теста.Можно ли как-то управлять этим?Например, замена имени столбца в профиле h2 на VERSION или любое другое решение?

1 Ответ

0 голосов
/ 02 ноября 2018

Решение состоит в том, что столбец VERSION# необходимо экранировать с кавычками в классе модели, например:

@Entity
@Table("USER_TYPE_VERSIONS")
public class UserTypeVersion {

   @Column("\"VERSION#\"")
   private String version;
   ...
}

Наконец, теперь hibernate может загружать такую ​​сущность в базе данных h2.Это узнаваемо само по себе.Таким образом, любые специальные символы должны быть заменены таким образом.

Примечание: не забудьте упомянуть такое изменение также в data.sql, если у вас есть некоторые тестовые данные.

insert into USER_TYPE_VERSIONS("VERSION#") values ("IT WORKS NOW!");
...