2011-08-11 4 views
0

HEllo 특정 사용자를 검색하려면이 시나리오를 사용해야하며 검색 텍스트 필드에 문자가 포함 된 모든 사용자가 표시되어야합니다. 내가 검색하면 다음 결과 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; 
    } 

을하지만 사용자 이름의 "정확한"일치를 넣어하지 않는 한 결과는 정의되지 않습니다 예를 나는 결과를 검색하는 경우에는 사용자가 존재하지하지만 난 후 라우 프를 검색하면 라우 프는

답변

2

은 HQL/기준의 like 절은 SQL의 like 절과 같은 의미를가 검색됩니다. "0, 하나 또는 여러 문자"를 의미 할 때 %를 사용해야합니다.

그래서 Restrictions.like("userName", "%" + searchName + "%")은 userName에 입력 한 검색 이름이 포함 된 모든 사용자를 반환합니다 (대소 문자를 구분 함).

당신도 할 수있는 Restrictions.like ("username", searchName, MatchMode.ANYWHERE)를 사용할 수도 있습니다.

관련 문제