休眠中的外卡字符

时间:2013-05-27 09:15:52

标签: hibernate

如何在hibernate中添加通配符?

我尝试这样做但已经有错误

“来自员工,其中epf就像”+ Epf +“%”;

Epf是传递给查询的int参数

3 个答案:

答案 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());