You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jOOQ中结合嵌入式类型(Embeddable)使用谓词?

在jOOQ中使用嵌入式类型进行谓词比较的可行性

完全可以在jOOQ中这样使用嵌入式类型做谓词比较,这正是jOOQ嵌入式类型设计的核心场景之一。

关键说明:

  • jOOQ会自动将嵌入式类型的比较拆解为对应字段的组合逻辑。比如你写的PRODUCT.CREATETIMESTAMP.gt(record),jOOQ会生成类似以下的SQL:

    WHERE (CreateDate > ?) OR (CreateDate = ? AND CreateTime > ?)
    

    这完全符合拆分时间戳的自然比较逻辑——先比较日期,日期相同时再比较时间。

  • 注意构造CreatetimestampRecord时的参数类型匹配:

    • 你的CreateDate是Date类型,应该传入LocalDate而非LocalDateTime,避免类型不匹配错误;
    • CreateTime是HHmmss格式的数值,要确保是6位整数(比如123456对应12:34:56),如果是5位的12345会被解析为01:23:45,需根据业务场景确认格式。

修正后的示例代码:

// 构造符合类型要求的阈值记录
CreatetimestampRecord threshold = new CreatetimestampRecord(
    LocalDate.now(),  // 对应Date类型的CreateDate字段
    123456            // 对应HHmmss格式的CreateTime字段(12:34:56)
);

// 执行查询
create.select(PRODUCT.ID)
      .from(PRODUCT)
      .where(PRODUCT.CREATETIMESTAMP.gt(threshold))
      .fetch();

如果需要自定义嵌入式类型的比较逻辑,也可以通过jOOQ代码生成器的配置扩展,但默认的组合比较逻辑已经能满足绝大多数拆分时间戳的查询需求。

内容的提问来源于stack exchange,提问作者Conner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 18:25:54