java - 使用 hibernate 根据 '123%' 获取 sql 结果

标签 java hibernate jpa

我正在使用 Hibernate 4,我的 DAO 类中有以下代码,我想在其中 从我的表中获取结果

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery<Employee> c = cb.createQuery(Employee.class);
        Root<Employee> emp = c.from(Employee.class);
        c.select(emp);
List<Predicate> criteria = new ArrayList<Predicate>();
ParameterExpression<String> pexp = cb.parameter(String.class,
                "employeeNumber");
Predicate predicate = cb.like(emp.get(Employee_.employeeNumber),
                pexp);

        criteria.add(predicate);

if (criteria.size() == 1) {
            c.where(criteria.get(0));           
        } else if (criteria.size() > 1) {
            c.where(cb.and(criteria.toArray(new Predicate[0])));

        }

TypedQuery<Employee> q = entityManager.createQuery(c);
if (employeeNumber != null) {
            q.setParameter("employeeNumber", employeeNumber);
data.setResult(q.getResultList());

当页面运行时,从日志中我可以看到 sql 为

select employeede0_.EMPLOYEE_NUMBER as EMPLOYEE1_0_ from EMPLOYEES employeede0_ 
where employeede0_.EMPLOYEE_NUMBER like ?

因此我看不到任何结果。理想情况下,我想要一个像这样的查询

select employeede0_.EMPLOYEE_NUMBER as EMPLOYEE1_0_ from EMPLOYEES employeede0_ 
    where employeede0_.EMPLOYEE_NUMBER like '123%'

我怎样才能实现这个目标?

最佳答案

你想最终执行

Predicate predicate = cb.like("employeeNumber", "123%");

所以包括百分比。

关于java - 使用 hibernate 根据 '123%' 获取 sql 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14316881/

相关文章:

java - 部署 java web 应用程序后出现 404 – 内部服务器错误

java - 由于堆栈溢出,C 中通常会发生什么?

java - apache tiles 2 JSPException 包括路径

java - Intellij 如何使用 spring boot 正确配置 hql。现在我得到 Persistence QL Queries are error-checked

java - 无法在 Xerces 或 Neko 中的节点上调用 getElementsByTagName?

Java - 为我的构造函数创建输入限制

hibernate sessionfactory 作为全局 jndi 资源

java - Hibernate 连接字符串做 MS SQL Server 2008 数据库名称(带大括号)

Spring Boot Java 映射实体到 DTO : array literal (strings) INSTEAD of array of objects

java - 当数据库列名称不同时,在基实体类中定义审核列吗?