Я пытаюсь вызвать административную функцию pg_catalog.pg_advisory_unlock
с помощью JOOQ. Я в состоянии создать модель для этой функции, имея это в моем Gradle файле сборки:Не удалось вызвать функцию pg_advisory_lock в Postgres с помощью jooq
schemata {
schema {
inputSchema = "public"
}
schema {
inputSchema = "pg_catalog"
}
includes = "public.*|pg_catalog.pg_advisory_lock"
}
Файл pg_catalog>Routines.java
имеет публичный метод static void pgAdvisoryLock1(Configuration configuration, Long __1)
который я называю как таковой:
Connection connection = DatabaseService.getInstance().getConnection("sampleUser");
Settings settings = new Settings()
.withRenderMapping(new RenderMapping()
.withSchemata(
new MappedSchema().withInput("shard_0")
.withOutput("shard_1")));
DSLContext create = DSL.using(connection, settings);
Long param = 1l;
pgAdvisoryLock1(create.configuration(), param);
Я получаю ошибка:
Exception in thread "main" org.jooq.exception.DataAccessException: SQL [select * from "pg_catalog"."pg_advisory_lock"("_1" := ?)]; ERROR: function pg_catalog.pg_advisory_lock(_1 => bigint) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Поблагодарили бы за любую помощь. Благодаря!
EDIT: Думаю, что это немного больше, я думаю, что я помню, где-то читал, что у JOOQ были проблемы с неименованными параметрами в функциях postgres. Подумайте, связано ли это с этим. Поскольку это административная встроенная функция, я не смог бы изменить неименованный параметр на именованный параметр. Я использую версию 3.6.2 JOOQ (в основном, потому что я использую этот плагин gradle (https://github.com/etiennestuder/gradle-jooq-plugin), который использует эту версию JOOQ, я думаю. Не уверен, что новые версии JOOQ имеют такое исправление.
Спасибо, Лукас, я ценю это! – iman453