我正在尝试使用JOOQ调用管理函数pg_catalog.pg_advisory_unlock
。我可以在gradle构建文件中生成该函数的模型:
schemata {
schema {
inputSchema = "public"
}
schema {
inputSchema = "pg_catalog"
}
includes = "public.*|pg_catalog.pg_advisory_lock"
}
文件pg_catalog>Routines.java
有一个方法public 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.
非常感谢任何帮助。谢谢!
编辑:考虑一下,我想我记得在某些地方看到JOOQ在postgres函数中遇到了非命名参数的问题。想知道这是否与此有关。由于它是一个管理内置函数,我无法将非命名参数更改为命名参数。我正在使用JOOQ的3.6.2版本(主要是因为我正在使用这个gradle插件(https://github.com/etiennestuder/gradle-jooq-plugin)我正在使用那个版本的JOOQ。不确定JOOQ的新版本是否已修复。答案 0 :(得分:0)
事实上,此问题已得到解决。
此插件中针对特定jOOQ版本的硬连线依赖是一个已知问题(https://github.com/etiennestuder/gradle-jooq-plugin/pull/14),我希望很快就会修复。