SQLException pg_get_serial_sequence НЕ НАЙДЕН - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь выполнить тесты JUnit с H2, и мое приложение настроено для работы с PostgreSQL и с Spring Boot ACL.

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

`mutableAclService.setClassIdentityQuery("select currval(pg_get_serial_sequence('acl_class', 'id'))");
mutableAclService.setSidIdentityQuery("select currval(pg_get_serial_sequence('acl_sid', 'id'))");`

для создания AclService.

У меня есть в application.properties конфигурация (spring.datasource.url=jdbc:h2:~/test_db;MODE=PostgreSQL)

Но она всегда возвращает меня:

org.springframework.jdb c .UncategorizedSQLException: StatementCallback; исключение без категории для SQLException для SQL [select currval (pg_get_serial_sequence ('acl_sid', 'id'))]; SQL состояние [90022]; код ошибки [90022]; Функция "PG_GET_SERIAL_SEQUENCE" не найдена; SQL оператор: выберите currval (pg_get_serial_sequence ('acl_sid', 'id'))) [90022-197]; вложенное исключение: org.h2.jdb c .JdbcSQLException: функция "PG_GET_SERIAL_SEQUENCE" не найдена; SQL оператор ...

Кто-нибудь знает, как это исправить?

1 Ответ

0 голосов
/ 23 января 2020

Замена

"select currval(pg_get_serial_sequence('acl_class', 'id'))"

для SQL стандартного запроса

"SELECT CURRVAL(SELECT SEQUENCE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'acl_class' AND COLUMN_NAME = 'id')"

это работает!

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