如何在hibernate中添加通配符?
我尝试这样做但已经有错误
“来自员工,其中epf就像”+ Epf +“%”;
Epf是传递给查询的int参数
答案 0 :(得分:6)
您缺少引号'...'
。结束查询应如下所示:
SELECT Employee WHERE epf LIKE 'text%'
将代码更改为
"from Employee where epf like '"+Epf+"%'";
应该做的伎俩。 注意:打开和关闭单引号'
... '
此处'"+Epf+"%'
但你接近并不好。将这样的文本添加到查询中是危险的。请考虑以下信息:
使用绑定参数更安全:
session.createQuery("from Employee where epf like :epf")
.setParameter("epf", epf + "%")
.list();
答案 1 :(得分:3)
Case-Insensitive%Like%Search
Criteria criteria = session.createCriteria(Any.class);
criteria.add(Restrictions.ilike(propertyName, value, MatchMode.END);
criteria.list();
答案 2 :(得分:0)
您可以为此使用条件构建器的“赞”功能。
int EPF=7;
CriteriaBuilder cb=session.getCriteriaBuilder();
CriteriaQuery<Object> cquery=cb.createQuery(Object.class);
Root<Employee> root=cquery.from(Employee.class);
cquery.select(root);
Predicate predicate=cb.like(root.<String>get("epf"),"EPF"+"%");
cquery.where(predicate);
Query q=session.createQuery(cquery);
System.out.println(q.list());