Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JOOQ selectQuery for Record5_Java_Sql_Jooq - Fatal编程技术网

Java JOOQ selectQuery for Record5

Java JOOQ selectQuery for Record5,java,sql,jooq,Java,Sql,Jooq,我是新来的JOOQ 我需要使用SelectQuery和returnresult,但它的返回类型是Record。是否可以将selectQuery与Record5一起使用?还是有其他解决办法 SelectQuery<Record> query = db.selectQuery(); query.addSelect(WARE.NAME, RECEIPTITEM.SALEPRICE, RECEIPTITEM.QUANTITY, RECEIPT.TSCCREATED, WARE

我是新来的JOOQ

我需要使用SelectQuery和returnresult,但它的返回类型是Record。是否可以将selectQuery与Record5一起使用?还是有其他解决办法

    SelectQuery<Record> query = db.selectQuery();
    query.addSelect(WARE.NAME, RECEIPTITEM.SALEPRICE, RECEIPTITEM.QUANTITY, RECEIPT.TSCCREATED, WARE.WARECATEGORYID);
    query.addFrom(RECEIPT
            .join(RECEIPTITEM).on(RECEIPT.ID.eq(RECEIPTITEM.RECEIPTID))
            .join(OUTLET).on(OUTLET.ID.eq(RECEIPT.OUTLETID))
            .join(WARE).on(WARE.ID.eq(RECEIPTITEM.WAREID)));
    query.addConditions(RECEIPT.TSCCREATED.between(start, end)
            .and(OUTLET.OWNERID.eq(ownerId)));
    if (outletId != null) {
        query.addConditions(RECEIPT.OUTLETID.eq(outletId));
    }
    if (merchantId != null) {
        query.addConditions(RECEIPT.MERCHID.eq(merchantId));
    }
SelectQuery=db.SelectQuery();
query.addSelect(WARE.NAME、RECEIPTITEM.SALEPRICE、RECEIPTITEM.QUANTITY、RECEIPT.tscreated、WARE.WARECATEGORYID);
query.addFrom(收据)
.join(RECEIPTITEM).on(RECEIPT.ID.eq(RECEIPTITEM.RECEIPTID))
.join(OUTLET).on(OUTLET.ID.eq(RECEIPT.OUTLETID))
.join(WARE).on(WARE.ID.eq(RECEIPTITEM.WAREID));
query.addConditions(RECEIPT.tscreated.between)(开始、结束)
。及(OUTLET.OWNERID.eq(OWNERID));
如果(outletId!=null){
query.addConditions(RECEIPT.OUTLETID.eq(OUTLETID));
}
if(merchantId!=null){
query.addConditions(RECEIPT.MERCHID.eq(merchantId));
}

您不能使用jOOQ创建
SelectQuery
类型

原因是
SelectQuery
()允许您通过(您自己完成的)不断向其中添加新列。每次这样的调用都会使
Record5
类型无效

但是,如果动态部分只是附加条件,则不必使用模型API来构造动态SQL。您可以按如下方式重写查询:

Condition condition = RECEIPT.TSCCREATED.between(start, end)
    .and(OUTLET.OWNERID.eq(ownerId));

if (outletId != null) {
    condition = condition.and(RECEIPT.OUTLETID.eq(outletId));
}
if (merchantId != null) {
    condition = condition.and(RECEIPT.MERCHID.eq(merchantId));
}

Select<Record5<String, BigDecimal, Integer, Timestamp, Long>> select =
db.select(
       WARE.NAME, 
       RECEIPTITEM.SALEPRICE, 
       RECEIPTITEM.QUANTITY, 
       RECEIPT.TSCCREATED, 
       WARE.WARECATEGORYID)
  .from(RECEIPT
      .join(RECEIPTITEM).on(RECEIPT.ID.eq(RECEIPTITEM.RECEIPTID))
      .join(OUTLET).on(OUTLET.ID.eq(RECEIPT.OUTLETID))
      .join(WARE).on(WARE.ID.eq(RECEIPTITEM.WAREID)))
  .where(condition);
Condition=RECEIPT.tscreated.between(开始、结束)
.和(OUTLET.OWNERID.eq(OWNERID));
如果(outletId!=null){
条件=条件和(接收.输出ID.等式(输出ID));
}
if(merchantId!=null){
条件=条件和(收货条件);
}
选择=
db.select(
WARE.NAME,
RECEIPTITEM.SALEPRICE,
RECEIPTITEM.QUANTITY,
已创建receive.tsc,
WARE.WARECATEGORYID)
.从(收据)
.join(RECEIPTITEM).on(RECEIPT.ID.eq(RECEIPTITEM.RECEIPTID))
.join(OUTLET).on(OUTLET.ID.eq(RECEIPT.OUTLETID))
.join(WARE).on(WARE.ID.eq(RECEIPTITEM.WAREID)))
.在何处(条件);