使用条件表达式检索包含特定字母的所有实体?

时间:2011-08-11 08:55:09

标签: hibernate

HEllo我有这个场景来搜索特定用户,应该出现的结果是包含搜索文本字段ex中字母的所有用户。如果我搜索了一个结果,则所有用户都包含字母a

我使用这种方法:

public List<User> search(String searchName) {
        session=sessionFactory.getCurrentSession();
        @SuppressWarnings("unchecked")
        List<User> users=session.createCriteria(User.class).
                        add(Restrictions.like("username", searchName)).list();
        return users;
    } 

但结果是未定义的,除非我将“完全”匹配用于用户名示例 如果我搜索结果是没有用户存在但是如果我搜索了raouf然后检索了raouf

1 个答案:

答案 0 :(得分:2)

HQL / criteria的like子句与SQL的like子句具有相同的语义。您需要使用%来表示“0,一个或多个字符”。

因此Restrictions.like("userName", "%" + searchName + "%")将返回其userName包含输入的搜索名称的所有用户(但它区分大小写)。

你也可以使用Restrictions.like(“username”,searchName,MatchMode.ANYWHERE)来为你做这件事。