【问题标题】:JOOQ orderBy issueJOOQ orderBy issue
【发布时间】:2015-10-09 22:15:53
【问题描述】:

当我使用 Record13 或更多 orderBy() 方法时显示错误

orderBy(org.jooq.SortField<T1>) in SelectOrderByStep cannot be applied to 
orderBy(org.jooq.SortField<java.sql.Timestamp>)

使用 Record12 或更低版本一切正常。

Record14 错误代码:

public Result<Record14<Integer, Timestamp, OperationType, Integer, Integer, String, String, String,
            Integer, String, String, Integer, String, String>> getOperationsHistory(int ownerId, Timestamp fromDate, Timestamp toDate, Integer outletId, Integer merchantId){
        Condition condition = OPERATION.TIMESTAMPEVENT.between(fromDate, toDate)
        .and(OUTLET.OWNERID.eq(ownerId));
        if (outletId != null) {
            condition = condition.and(OPERATION.OUTLETID.eq(outletId));
        }
        if (merchantId != null) {
            condition = condition.and(OPERATION.MERCHANTID.eq(merchantId));
        }
        Select<Record14<Integer, Timestamp, OperationType, Integer, Integer,
                String, String, String, Integer, String, String, Integer, String, String>> select =
                db.select(OPERATION.ID, OPERATION.TIMESTAMPEVENT, OPERATION.TYPE, OPERATION.AMOUNT, OPERATION.CREDITS, MERCHANT.NAME,
                        CLIENT.PHONE, CLIENT.PUBLICID, CLIENT.ID, CLIENT.NAME, CLIENT.AVATARURL, RECEIPT.PRINTEDNO, OFFER.TITLE, OFFER.TYPE)
                .from(OPERATION.leftOuterJoin(CLIENT).on(OPERATION.CLIENTID.eq(CLIENT.ID))
                        .leftOuterJoin(MERCHANT).on(OPERATION.MERCHANTID.eq(MERCHANT.ID))
                        .leftOuterJoin(OUTLET).on(OPERATION.OUTLETID.eq(OUTLET.ID))
                        .leftOuterJoin(RECEIPT).on(OPERATION.RECEIPTID.eq(RECEIPT.ID))
                        .leftOuterJoin(OFFER).on(OPERATION.OFFERID.eq(OFFER.ID)))
                .where(condition).orderBy(OPERATION.TIMESTAMPEVENT.desc());
        return select.fetch();
    }

如何解决?

【问题讨论】:

  • 什么编译器(和版本)产生了这个错误?例如。 Eclipse build id / javac 编译器版本等。另外,你用的是什么jOOQ版本?
  • @LukasEder 编译器版本 1.8。 JOOQ 3.4.2 版
  • 你能给出exact编译器版本吗?例如。 javac -version,或 Eclipse 构建 ID(从帮助 > 关于 Eclipse)
  • @LukasEder javac 1.8.0_45

标签: java sql jooq


【解决方案1】:

根据您的 cmets,我认为您没有使用最新版本的 JDK:1.8.0_45。在最近的过去,Java 编译器中有很多错误修复。 The latest release of the Oracle JDK is version 1.8.0_60.

jOOQ 大量使用:

  • 重载
  • 泛型
  • 可变参数

在 Java 8 中,类型推断已被大幅修改以支持 lambda 表达式和generalized target-type inference。这些修改是早期 JDK 8 版本中出现错误的原因。

我建议升级。

【讨论】:

  • 我已将我的 JDK 更新到 1.8.0_60 版本,并将我的 Intellij IDEA 更新到最新的 14.1.5 版本,但没有任何改变。
  • 我终于修好了))
  • @Lay'O:那到底是不是和编译器版本有关?
猜你喜欢
  • 1970-01-01
  • 2019-12-21
  • 2019-01-12
  • 1970-01-01
  • 2013-12-04
  • 2014-11-10
  • 2019-01-14
  • 2018-03-22
  • 2018-05-24
相关资源
最近更新 更多