从jOOQ中的例程查询



我有一个PostgreSQL函数,它返回一组UDT(即它的函数签名包括RETURNS SETOF <UDT name>)。我正试图在jOOQ中运行以下查询:

SELECT col1, col2
FROM custom_function(param1, param2)

jOOQ编解码器已经生成了CCD_ 2的例程。但是,我不能在from()子句中使用该例程,因为该例程返回Field,而from()期望Table

在jOOQ中运行上述查询的最佳方式是什么?我知道我可以用纯SQL编写查询,但我想看看是否有更好的方法。

对返回SETOF类型的PostgreSQL函数的显式支持尚未实现,但它正在实现:

  • https://github.com/jOOQ/jOOQ/issues/3376

不过,即将推出的jOOQ 3.5.0将支持表值函数,即返回TABLE类型的表:

  • https://github.com/jOOQ/jOOQ/issues/3375

在这些功能得到支持之前,您最好使用纯SQL,例如:

DSL.using(configuration)
   .select(DSL.field("col1"), DSL.field("col2"))
   .from("custom_function(param1, param2)")
   .fetch();

最新更新