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

Panache中LIKE操作返回空列表问题咨询

Panache框架LIKE查询返回空列表的问题解决

Panache完全支持LIKE操作,你的问题出在查询语句中字符串拼接的方式不符合Panache的参数绑定逻辑。

问题分析

你当前的查询语句中使用'%' || :uuid || '%'来拼接通配符和参数,但Panache的参数绑定机制无法正确解析这种写法,导致LIKE条件没有生效。而你提到的两种正常情况:

  • 当uuid设为null时,:uuid IS NULL条件触发,返回所有数据
  • 当uuid改为123时,GUUID = :uuid条件触发,匹配到对应行

这说明前两个条件逻辑正常,问题仅出在LIKE语句的参数处理上。

解决方案

推荐将通配符直接附加到参数值中,而非在查询语句里拼接,这种方式更符合Panache的参数绑定规范,同时也能避免SQL注入风险:

val targetUuid = "092ed247-887e-4ffe-8b9e-876c307c038"
val paramsMap = Parameters()
paramsMap.and("uuid", targetUuid)
// 将通配符直接加到参数值里
paramsMap.and("uuidLike", "%$targetUuid%")

// 调整查询语句,使用新的参数名
val panacheQuery = find(":uuid IS NULL OR GUUID = :uuid OR GUUID LIKE :uuidLike", paramsMap)

val en = panacheQuery.list<MldEntity>()
println(en)

补充说明

如果你坚持要在查询语句中拼接字符串,需要确认你使用的数据库对应的字符串拼接语法(比如MySQL用CONCAT('%', :uuid, '%'),PostgreSQL用'%' || :uuid || '%'),但即使语法正确,Panache的参数绑定仍可能无法正确处理这种嵌套拼接,因此优先推荐上述将通配符放入参数值的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:44:56