jxhyang 2015-03-02 16:04 采纳率: 0%
浏览 6826

criteriaBuilder 一个字段like 多个(or的关系不是and)

需求是比如是查出年龄在20-30 同时名字叫王三的**或者**叫李四的
criteriaBuilder.or(predicate, criteriaBuilder.like(name,value);//伪代码

    (希望对应的sql是这样的) :select * from XX a where  age in(20,30) and  (name like '%王三%' or origSourceIp like 李四%')  and sex like '%女%'

我如果按照上面的criteriaBuilder.or(like...)来写 
语句就成了select * from XX a where  age in(20,30) and  name like '%王三%' or origSourceIp like 李四%'  and sex like '%女%'(and之后在两个like 的时候没有括号,这样查询的语句就达不到要求)

难道就criteriaBuilder 就没有那种允许一个字段like 多个值得么···或者的关系不是and的关系
  • 写回答

2条回答 默认 最新

  • 似水若无心 2020-04-13 18:33
    关注

    Predicate pred1 = criteriaBuilder.like(root.get("name"),"%"+name+"%");
    Predicate pred2 = criteriaBuilder.like(root.get("name"),"%"+name+"%");
    predicate.getExpressions().add(criteriaBuilder.or(pred1, pred2));

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置