2011-08-11 9 views
0

HEllo特定のユーザーを検索する場合、このシナリオがあります。表示されるべき結果は、検索テキストフィールドに文字を含むすべてのユーザーです。私が検索した場合、結果の文字条件式を使用して特定の文字を含むすべてのエンティティを取得しますか?

を含むすべてのユーザーが、私はそうするように、このメソッドを使用している:

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は

答えて

2

はHQL /基準のlike句はSQLのlike句と同じ意味を持って取得されます。あなたは "0、1つまたは複数の文字"を意味するために%を使用する必要があります。

したがってRestrictions.like("userName", "%" + searchName + "%")は、userNameに入力した検索名が含まれているすべてのユーザーを返します(ただし、大文字と小文字が区別されます)。

また、あなたのために行うRestrictions.like( "username"、searchName、MatchMode.ANYWHERE)を使用することもできます。

関連する問題