从用户定义函数 JOOQ 查询
Query from user defined function JOOQ
我想从用户定义的函数中查询。我见过的所有示例都将函数查询为 select
参数
myFunction.setMyParam("plapla");
create.select(myFunction.asField()).fetch();
这个 return 结果是一列,尽管结果实际上是多列。
我想做的是
myFunction.setMyParam("plapla");
create.select().from(myFunction).fetch();
但是我还没有找到这样做的方法...
目前我正在使用
DSL.using(create.configuration())
.select()
.from("myFunction('" + myparam + "')")
.fetch();
这似乎不是一个好的解决方案(未转义、未处理等)
如何使用 JOOQ 生成函数来实现?
jOOQ 为 PostgreSQL table 值函数生成函数调用。如果您的函数如下所示:
CREATE FUNCTION my_function(text, integer, text)
RETURNS TABLE (myParams text) AS ...
然后jOOQ产生如下方法:
public class Tables {
...
public static MyFunction myFunction(String param1, Integer param2, String param3)
{ ... }
}
然后您可以这样调用:
Result<MyFunctionRecord> result =
DSL.using(create.configuration())
.selectFrom(myFunction("a", 1, "b")
.fetch();
结果记录的格式为:
public class MyFunctionRecord {
...
public String getMyParams() { ... }
}
由于臭名昭著的
,我不得不暂时关闭生成 table 值函数
java: variable XYZ is already defined in class
我能够像这样完成以上操作
create
.selectFrom( Routines.myFunction(myparam).toString() )
我希望能够正确生成 table 值函数,因为上面的答案更好,但这同时会起作用。
我想从用户定义的函数中查询。我见过的所有示例都将函数查询为 select
参数
myFunction.setMyParam("plapla");
create.select(myFunction.asField()).fetch();
这个 return 结果是一列,尽管结果实际上是多列。
我想做的是
myFunction.setMyParam("plapla");
create.select().from(myFunction).fetch();
但是我还没有找到这样做的方法...
目前我正在使用
DSL.using(create.configuration())
.select()
.from("myFunction('" + myparam + "')")
.fetch();
这似乎不是一个好的解决方案(未转义、未处理等)
如何使用 JOOQ 生成函数来实现?
jOOQ 为 PostgreSQL table 值函数生成函数调用。如果您的函数如下所示:
CREATE FUNCTION my_function(text, integer, text)
RETURNS TABLE (myParams text) AS ...
然后jOOQ产生如下方法:
public class Tables {
...
public static MyFunction myFunction(String param1, Integer param2, String param3)
{ ... }
}
然后您可以这样调用:
Result<MyFunctionRecord> result =
DSL.using(create.configuration())
.selectFrom(myFunction("a", 1, "b")
.fetch();
结果记录的格式为:
public class MyFunctionRecord {
...
public String getMyParams() { ... }
}
由于臭名昭著的
,我不得不暂时关闭生成 table 值函数java: variable XYZ is already defined in class
我能够像这样完成以上操作
create
.selectFrom( Routines.myFunction(myparam).toString() )
我希望能够正确生成 table 值函数,因为上面的答案更好,但这同时会起作用。