Я использую liquibase для инициализации своей базы данных h2 для модульного тестирования, но есть проблема с одной таблицей, использующей «ключ» в качестве имени столбца.
Я пробовал «_key» в качестве имени, оно работает, ноБаза данных (которую я не могу изменить в своей схеме) использует «ключ» в качестве имени столбца, поэтому я должен поместить @Column ("\" ключ \ "") в мой класс домена. Это работает для SQL Server (производственная база данных), но не для h2 (в дБ памяти для тестирования)
В Liquibase xml :( для модульного теста)
<column name='_key' type="varchar(100)">
<constraints nullable="true" />
</column>
Мой домен:
@Column(name = "_key", length = 100)
//@Column(name = "\"key\"", length = 100)
private String key;
Поэтому я должен раскомментировать первый вариант и прокомментировать второй, чтобы заставить работать модульный тест, и сделать наоборот, чтобы приложение работало.
Использование
@Column(name = "\"key\"", length = 100)
с <column name="key" type="varchar(100)">
или <column name="\"key\"" type="varchar(100)">
или <column name='"key"' type="varchar(100)">
возвращает ошибку:
Проверка схемы: отсутствует столбец [ключ] в таблице [displaymessages]
и запрос, который создает таблицу:
CREATE TABLE PUBLIC.displaymessages (
id BIGINT AUTO_INCREMENT NOT NULL,
"'key'" VARCHAR(100),
value VARCHAR(1000),
type INT NOT NULL,
createdon date NOT NULL,
modifiedon date,
isdeleted INT NOT NULL,
CONSTRAINT PK_DISPLAYMESSAGES PRIMARY KEY (id)
)