首页 > 解决方案 > 使用 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 中过滤?

标签: javahibernatejpajava-ee-7

解决方案


推荐阅读