【问题标题】:JOOQ selectQuery for Record5Record5 的 JOOQ 选择查询
【发布时间】:2015-09-08 17:40:16
【问题描述】:

我是 JOOQ 的新手。

我需要使用 SelectQuery 并返回 Result,但它的返回类型是 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));
    }

【问题讨论】:

    标签: java sql jooq


    【解决方案1】:

    您不能使用 jOOQ 创建 SelectQuery&lt;Record5&lt;...&gt;&gt; 类型。

    原因是SelectQuery (which is part of the model API) 允许您通过SelectQuery.addSelect()(您自己完成)继续向其中添加新列。每个这样的调用都会使Record5&lt;...&gt; 类型无效。

    但是,如果动态部分只是附加条件,则不必使用模型 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);
    

    【讨论】:

      猜你喜欢
      • 2018-01-27
      • 1970-01-01
      • 2015-11-15
      • 2017-10-30
      • 2021-04-12
      • 2022-01-22
      • 2014-06-21
      • 2016-05-22
      • 2014-09-23
      相关资源
      最近更新 更多