我正在使用 jOOQ CommonTableExpression 从表中获取不同周末日期的列表。它是使用多个 cte 的较大查询中最短的 cte。我在 postgres 中有查询,但在 jOOQ 中没有正确处理。
根据 WITH 的 jOOQ 手册页:
// Code for creating a CommonTableExpression instance
name("t1").fields("f1", "f2").as(select(val(1), val("a")));
我试过:
import org.jooq.DSL.select;
MyLog lg = MY_LOG.as("lg"); // a table generated by jOOQ.
CommonTableExpression cteWkend = name("cteWkend")
.fields("wkend")
.as(select((lg.WKEND)).distinctOn(lg.WKEND).from(lg).fetch());
我从 intelliJ 收到这个错误:
as Select<R> in DerivedColumnList1 cannot be applied to org.jooq.Result<org.jooq.Record1<LocalDate>>
看起来问题出在 .as(select ...) 中,并且我在 (select ...) 和 .as() 之间的类型不匹配,这期望有所不同。
搜索让我回到引用的 jOOQ WITH 手册页,它给出了一个相当简单的例子。我一直无法找到一个重要的例子来告诉我应该去那里做什么,我做错了什么或为什么错了。
有人可以在这里为我指明正确的方向吗?
最佳答案
在此处删除此 fetch()
调用:
CommonTableExpression cteWkend = name("cteWkend")
.fields("wkend")
.as(select((lg.WKEND)).distinctOn(lg.WKEND).from(lg) /* .fetch() */);
您不希望在将结果传递给公用表表达式之前执行公用表表达式中的子查询
关于java - 找不到使用 jOOQ 在 CommonTableExpression 中选择数据的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59167061/