我正在使用 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/