Java 来自用户定义函数JOOQ的查询

Java 来自用户定义函数JOOQ的查询,java,sql,postgresql,jooq,Java,Sql,Postgresql,Jooq,我想从用户定义的函数中进行查询。我看到的所有示例都是将函数查询为select参数 myFunction.setMyParam("plapla"); create.select(myFunction.asField()).fetch(); 这会将结果作为一列返回,尽管结果实际上是多列 我想做的是 myFunction.setMyParam("plapla"); create.select().from(myFunction).fetch(); 但我还没有找到一个方法来做到这一点 目前我正在使用

我想从用户定义的函数中进行查询。我看到的所有示例都是将函数查询为
select
参数

myFunction.setMyParam("plapla");
create.select(myFunction.asField()).fetch();
这会将结果作为一列返回,尽管结果实际上是多列

我想做的是

myFunction.setMyParam("plapla");
create.select().from(myFunction).fetch();
但我还没有找到一个方法来做到这一点

目前我正在使用

DSL.using(create.configuration())
                .select()
                .from("myFunction('" + myparam + "')")
                .fetch();
而且这似乎不是一个好的解决方案(未经转移、未经治疗等)


如何使用JOOQ生成的函数执行此操作?

JOOQ为PostgreSQL表值函数生成函数调用。如果函数如下所示:

创建函数my_函数(文本、整数、文本)
将表(myParams文本)返回为。。。
然后jOOQ生成以下方法:

公共类表{
...
公共静态MyFunction MyFunction(字符串参数1、整数参数2、字符串参数3)
{ ... }
}
您可以这样称呼它:

结果=
使用(create.configuration())
.从中选择(myFunction(“a”,1,“b”)
.fetch();
结果记录的格式如下:

公共类MyFunctionRecord{
...
公共字符串getMyParams(){…}
}

由于臭名昭著的

java:类中已定义变量XYZ

我能够像这样完成上述任务

create
    .selectFrom( Routines.myFunction(myparam).toString() )

我希望能够正确生成表值函数,因为上面的答案更好,但这同时也会起作用。

表值函数高度依赖于jOOQ中的SQL方言。您使用的是什么数据库?另外,您是否可以显示您在数据库中声明的
MY_函数的签名g postgres和
MY_函数(text,integer,text)
可能与此问题有关。我的函数返回表
返回表(myParams text),形式为$BODY$
myFunction.execute(configuration());myFunction.getMyParameter();
仅返回第一行。使用JOOQ 3.8.3,您知道可以编辑您的问题:)我想如果我编辑你不会收到通知?我的函数如你所说,但它不是在表下发布的,它在Routine下。我看到了,代码生成器配置中有一个标志,它也在表下。不过这没关系。设置
true
有效