Reputation: 14731
I am using Hibernate 4 and I have the following code in my DAO class where I would like to get results from my table
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());
When page runs, from log I could see sql as
select employeede0_.EMPLOYEE_NUMBER as EMPLOYEE1_0_ from EMPLOYEES employeede0_
where employeede0_.EMPLOYEE_NUMBER like ?
Because of this I am not able to see any results. Ideally I would like to have a query like
select employeede0_.EMPLOYEE_NUMBER as EMPLOYEE1_0_ from EMPLOYEES employeede0_
where employeede0_.EMPLOYEE_NUMBER like '123%'
How can I achieve this?
Upvotes: 0
Views: 351
Reputation: 36759
This should work for you:
criteria.add ( Restrictions.like ("employeeNumber", "123%" ) );
Upvotes: 1
Reputation: 27104
You want to end up executing
Predicate predicate = cb.like("employeeNumber", "123%");
So including the percent.
Upvotes: 2