来自 trunc() 编辑字段的 JOOQ orderBy()

JOOQ orderBy() from trunc()-ed field

基于这个问题:

这是我的查询:

    Result<Record1<Timestamp>> result = createQueryBuilder()
        .selectDistinct(trunc(incomeTable.REF_DATE, DatePart.DAY).as("refdate"))
        .from(incomeTable)
        .where(incomeTable.PROBOS_ID.eq(probosId))
        .fetch();

我想在 as("refdate") 字段的位置添加一个 .orderBy()

您有多种选择,最简单的一种是将投影列表达式分配给局部变量并在查询中重复使用它两次

Field<Timestamp> refdate = trunc(incomeTable.REF_DATE, DatePart.DAY).as("refdate");

Result<Record1<Timestamp>> result = createQueryBuilder()
    .selectDistinct(refdate)
    .from(incomeTable)
    .where(incomeTable.PROBOS_ID.eq(probosId))
    .orderBy(refdate)
    .fetch();

或者,如果这不可能,请使用 DSL.field(Name):

为 order by 子句创建一个新的字段引用
Result<Record1<Timestamp>> result = createQueryBuilder()
    .selectDistinct(trunc(incomeTable.REF_DATE, DatePart.DAY).as("refdate"))
    .from(incomeTable)
    .where(incomeTable.PROBOS_ID.eq(probosId))
    .orderBy(field(name("refdate"))
    .fetch();