вложенное исключение - org.h2.jdbc.JdbcSQLException: столбец "COMMENT" не найден; Оператор SQL: - PullRequest
0 голосов
/ 10 мая 2019

Запуск тестового примера весенней загрузки для репозитория JPA с базой данных H2.

В файле data.sql для базы данных H2 я попытался с именем столбца как «COMMENT», а также с COMMENT, все еще получая то же исключение. Мой репозиторий расширяет PagingAndSortingRepository.

Исключение

Caused by: org.h2.jdbc.JdbcSQLException: Column "COMMENT" not found; SQL statement:INSERT INTO RESEARCH_REQUEST (ID, MOD_COUNT, CLIENT_NAME, "COMMENT", PROCESS_ID, INITIATED_BY, INITIATED_AT, STATUS_CD, CREATOR, CREATE_TS) VALUES (500,0, 'Test Client','Test comment', 987654, 'test6@test.com', TO_TIMESTAMP('2018-12-19 12:03:21.000000000', 'YYYY-MM-DD HH24:MI:SS.FF'), 'A', 'test6@test.com', TO_TIMESTAMP('2018-12-19 12:03:21.000000000', 'YYYY-MM-DD HH24:MI:SS.FF')) [42122-197]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
    at org.h2.message.DbException.get(DbException.java:179)
    at org.h2.message.DbException.get(DbException.java:155)
    at org.h2.table.Table.getColumn(Table.java:682)
    at org.h2.command.Parser.parseColumn(Parser.java:936)
    at org.h2.command.Parser.parseColumnList(Parser.java:920)
    at org.h2.command.Parser.parseInsertGivenTable(Parser.java:1258)
    at org.h2.command.Parser.parseInsert(Parser.java:1222)
    at org.h2.command.Parser.parsePrepared(Parser.java:431)
    at org.h2.command.Parser.parse(Parser.java:335)
    at org.h2.command.Parser.parse(Parser.java:307)
    at org.h2.command.Parser.prepareCommand(Parser.java:278)
    at org.h2.engine.Session.prepareLocal(Session.java:611)
    at org.h2.engine.Session.prepareCommand(Session.java:549)
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1247)
    at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:217)
    at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:205)
    at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:95)
    at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java)
    at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:473)

data.sql

INSERT INTO RESEARCH_REQUEST (ID, MOD_COUNT, CLIENT_NAME, "COMMENT", PROCESS_ID, INITIATED_BY, INITIATED_AT, STATUS_CD, CREATOR, CREATE_TS) VALUES (500,0, 'Test Client','Test comment', 987654, 'test6@test.com', TO_TIMESTAMP('2018-12-19 12:03:21.000000000', 'YYYY-MM-DD HH24:MI:SS.FF'), 'A', 'test6@test.com', TO_TIMESTAMP('2018-12-19 12:03:21.000000000', 'YYYY-MM-DD HH24:MI:SS.FF'));

Класс сущности

@Column(name = "[COMMENT]", length = 1000)
private String comment;

основное приложение. Свойства

spring.datasource.url= jdbc:oracle:thin:@xxx.xx.xx.com:xxxx:xxxxx
spring.datasource.driverClassName= oracle.jdbc.driver.OracleDriver
spring.datasource.type= com.zaxxer.hikari.HikariDataSource
spring.datasource.maximumPoolSize=2
spring.datasource.maxLifeTime=300000
spring.datasource.minimumIdle=1
spring.datasource.idleTimeout=300000
spring.datasource.connectionTimeout=10000
spring.datasource.poolName=xxx-pool

тестовое приложение. Свойства

spring.datasource.url= jdbc:h2:mem:test;Mode=Oracle;DB_CLOSE_DELAY=-1
spring.datasource.driverClassName= org.h2.Driver
spring.datasource.type= com.zaxxer.hikari.HikariDataSource
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.datasource.initializationFailTimeout=1000
spring.datasource.connectionTimeout=30000
spring.datasource.maximumPoolSize=1
spring.datasource.maxLifetime=300000
spring.datasource.poolName=xxx-pool

Тестовый класс

@RunWith(SpringRunner.class)
@SpringBootTest(classes =XXXMicroserviceLauncher.class)
public class ResearchRequestRepositoryTest {

1 Ответ

0 голосов
/ 10 мая 2019

@ Столбец (имя = "[КОММЕНТАРИЙ]", длина = 1000)

приватный комментарий String;

В своем коде вы предоставляете аннотацию @column с именем и именем, которые вам не нужно использовать [].

Попробуйте это:

@ Столбец (имя = "КОММЕНТАРИЙ", длина = 1000)

приватный комментарий String;

также проверьте имя поля в таблице базы данных и укажите то же самое в запросе.

...