You need to enable JavaScript to run this app. Kotlin Exposed 如何实现带Postgres原生函数的复杂删除查询
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Exposed 如何实现带Postgres原生函数的复杂删除查询

Kotlin Exposed 框架下的时间条件删除查询实现问题

业务需求

需编写删除查询逻辑,调用Postgres原生函数筛选待删除记录:删除所有start_at(时间戳类型)列的时间早于指定动态天数阈值(示例取值为5天)的全部记录。
参考的原生Postgres查询语句:

delete from my_table t where date_part ('day', (current_date - t.start_at))>= 5

编码卡点

目前在Kotlin编码环节,Exposed官方文档未提供这类复杂过滤条件的实现方案,梳理出两个初步可行的实现思路:

思路1:基于Exposed DSL的deleteWhere实现

尝试完全使用框架DSL语法构建过滤条件,卡在原生数据库函数部分的DSL表达:

transaction {
   MyTable.deleteWhere {
     MyTable.startAt greaterEq ??????
   }
}

思路2:原生SQL拼接执行

尝试直接传入拼接后的原生删除SQL执行,存在参数注入风险:

transaction {
   exec ("delete query here >= ${daysToFilter}")
}

待解答问题

  • 是否可以按照思路1的Exposed DSL形式实现该查询?
  • 如果DSL形式不可行,最优的实现方式是什么?

测试验证数据集

idstart_at
12020-09-01 09:00:00
22020-09-02 09:00:00
32020-09-03 09:00:00
42020-09-04 09:00:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.10 05:15:02