java - 使用 JPA 的本机 SQL 查询返回整个表而不是过滤
问题描述
String name="abc";
StringBuilder sb= new StringBuilder("Select A_ID from AB Where B_ID IN(Select ID FROM B Where ");
sb.append(StringUtils.isNotEmpty(name)? "UPPER(B.NAME) LIKE '%"+name.toUpperCase()+ "%'":"");
sb.append(")");
List<Object> result= em.createNativeQuery(sb.toString()).getResultList();
上面的查询返回 AB 表的所有记录,而不是基于LIKE条件过滤但是
如果我在数据库中执行这个查询,它只返回 5 条记录,
很奇怪
为什么 Like 不在 JPA 中过滤?
解决方案
推荐阅读
- java - 如何使用 poi 库获取 excel 文件中特定列的行数
- javascript - 使用 HTML 值数组来选择复选框
- tsql - SQL Server 和索引和空参数
- python - 当我尝试部署到 Heroku 时,我的 python 应用程序将无法构建
- javascript - 连接变量和函数名
- javascript - $sum 通过匹配数组 mongodb 中的字段
- c# - 如何为网络中的每个玩家设置一个变量
- html - 如何使用 CSS 将文本环绕在图像周围?
- c# - 实体框架中未填充外键
- mysql - 如何联接两个表,然后使用 CASE 表达式确定它们是如何排序的?SQL