这是我的问题..
SelectQuery<Record> selectQuery = transRefundFee.selectQuery();
selectQuery.addSelect(AccountBill.ACCOUNT_BILL.BILL_NUMBER,AccountBill.ACCOUNT_BILL.BILL_AMOUNT,AccountBill.ACCOUNT_BILL.TOTAL_PAID );
selectQuery.addFrom(AccountBill.ACCOUNT_BILL);
selectQuery.addConditions(AccountBill.ACCOUNT_BILL.FOLDER_RSN.eq(argFolderRSN));
我必须使用Case Statement添加orderby我们如何才能执行此操作我检查Here但是我的情况不适用于我添加的任何其他方式
selectQuery.addOrderBy( DSL.decode().when(AccountBill.ACCOUNT_BILL.BILL_AMOUNT.le(new BigDecimal(0)),AccountBill.ACCOUNT_BILL.BILL_AMOUNT).then(AccountBill.ACCOUNT_BILL.BILL_AMOUNT) .otherwise(AccountBill.ACCOUNT_BILL.BILL_NUMBER));
但它的说法是The method then(TableField<AccountBillRecord,BigDecimal>) is undefined for the type CaseConditionStep<BigDecimal>
与以下代码相同
selectQueryFee.addOrderBy(DSL.decode().when(AccountBill.ACCOUNT_BILL.BILL_AMOUNT.le(new BigDecimal(0))
.then(AccountBill.ACCOUNT_BILL.BILL_AMOUNT)
.otherwise(AccountBill.ACCOUNT_BILL.BILL_NUMBER)));
然后(TableField)方法未定义 对于类型条件
答案 0 :(得分:2)
自jOOQ 3.2起,CASE
表达式支持未实现when()
... then()
结构,即没有then()
个关键字。相反,写一下:
DSL.decode()
.when(AccountBill.ACCOUNT_BILL.BILL_AMOUNT.le(new BigDecimal(0)),
AccountBill.ACCOUNT_BILL.BILL_AMOUNT)
.otherwise(AccountBill.ACCOUNT_BILL.BILL_NUMBER)
jOOQ路线图上有一个待处理的功能请求要求纠正此问题:#615