JOOQ orderBy问题
JOOQ orderBy issue
当我使用 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();
}
如何解决?
根据您的评论,我认为您没有使用最新版本的 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 版本中出现错误的原因。
我建议升级。
当我使用 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();
}
如何解决?
根据您的评论,我认为您没有使用最新版本的 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 版本中出现错误的原因。
我建议升级。