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

如何在QueryDsl中结合数组操作编写LIKE查询Predicate

实现方案

首先要明确:你当前代码里的eqAny是精确匹配列表中的任意值,而需求是查询字段包含列表中任一词汇的行,所以需要调整逻辑,用contains(或like)结合多条件OR来实现。

代码实现

final var builder = new BooleanBuilder();
List<String> keywords = Arrays.asList("foo", "bar", "baz");
// 遍历关键词列表,为每个关键词添加"包含"的OR条件
keywords.forEach(keyword -> {
    builder.or(qAccount.accAddress.contains(keyword));
});

Predicate predicate = builder.getValue();

补充说明

  • 这里的qAccount.accAddress是QueryDSL生成的查询路径对象,类型为ArrayPath<String[], String>,对应数据库中varchar类型的address字段。
  • 如果需要忽略大小写匹配,可以用containsIgnoreCase替代contains。
  • 若列表为空,建议提前处理,避免生成无效的查询条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:51:57