2016-12-13 3 views
0

Я тестирую метод создания для своего приложения. В тесте я встроили HSQL дб, и с использованием Spring JdbcTemplateОшибка при тестировании Вставить строку во встроенный hsqldb с помощью jdbcTemplate

<jdbc:embedded-database id="dataSource" type="HSQL"> 
    <jdbc:script location="classpath:/sql/db/db-schema.sql"/> 
    <jdbc:script location="classpath:/sql/db/db-data.sql"/> 
</jdbc:embedded-database> 

где дб-data.sql является

INSERT INTO C_ContactType(name) VALUES ('bob_eng991'); 
INSERT INTO C_ContactType(name) VALUES ('bob_eng2'); 
INSERT INTO C_ContactType(name) VALUES ('bob_eng3'); 
INSERT INTO C_ContactType(name) VALUES ('bob_eng422'); 

дб-schema.sql является

CREATE TABLE C_ContactType (
    contactTypeId INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY, 
    name VARCHAR(90) NOT NULL, 
    deletedOn DATETIME, 
    deletedBy INT 
); 

и мой тест is

работает тест, который я получаю ошибку здесь

ResultSet rs = jdbcTemplate.insertWithKey(tablePath, 
      insert -> insert.columns(paths.toArray(new Path[paths.size()])) 
        .values(params.toArray(new Object[paths.size()])) 
        .executeWithKeys()); 

где tablePath указует на «C_ContactType», путей является ArrayList с моими столбцами таблицы, за исключением поля Autoincrement, и PARAMS является ArrayList со значениями (кроме поля Autoincrement)

И журналы

Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: contactTypeId 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.error.Error.error(Unknown Source) 
at org.hsqldb.Table.getColumnIndex(Unknown Source) 
at org.hsqldb.Table.getColumnIndexes(Unknown Source) 
at org.hsqldb.StatementDML.setGeneratedColumnInfo(Unknown Source) 
at org.hsqldb.StatementManager.compile(Unknown Source) 
at org.hsqldb.Session.execute(Unknown Source) 
... 82 more 

ответ

0

ошибка показать имя столбца, запрошенной рамки. Название находится в смешанном случае contactTypeId.

В объявлении вашей таблицы нет символов двойной кавычки вокруг имен таблиц и столбцов, поэтому имена преобразуются в верхний регистр с помощью механизма базы данных. Вы должны изменить определение таблицы:

CREATE TABLE C_ContactType (
"contactTypeId" INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, 
+0

спасибо, я постараюсь это, но у меня есть тесты с обновлением данных тоже, и они ведут себя нормально –

+0

последний код в HSQLDB SVN/базовый/багажник должен работать без изменения таблицы определение – fredt

Смежные вопросы