无法使用 jOOQ 在 CommonTableExpression 中找到 select 数据的正确方法

Can't find correct way to select data in a CommonTableExpression with jOOQ

我正在使用 jOOQ CommonTableExpression 从 table 中获取不同周末日期的列表。它是使用多个 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() */);

您不希望公共 table 表达式中的子查询在将其结果传递给公共 table 表达式

之前执行