나는 이름 필드를 기반으로 테이블을 검색하는 데 사용하는 DetachedCriteria
을 가지고 있습니다. 검색에서 대소 문자를 구별하지 않으려 고합니다. HQL을 사용하지 않고이 작업을 수행 할 수있는 방법이 있는지 궁금합니다.집계 함수 호출을 위해 Hibernate DetachedCriteria 사용
private void searchByFullName(DetachedCriteria criteria, String searchCriteria) {
criteria.add(Restrictions.like("fullName", "%" + searchCriteria.toLowerCase() + "%"));
criteria.addOrder(Order.asc("fullName"));
}
그러나 나는 그것이 검색 (는 대문자와 소문자를 모두 검색 할 수있다) 그렇게되면이 사건을 무시 있는지 확인하려면, 그래서 생성하는 SQL처럼 보일 것이다 : 뭔가 같은 :
SELECT * FROM Student WHERE ? LIKE toLower(FULL_NAME);
테이블에 행이 많으면 엔진에서 테이블 스캔을 수행해야하는데, 원하지 않을지도 모르는'toLower (FULL_NAME) '을 수행해야합니다. 한 가지 대안은 그것을 모두 소문자로 저장하거나 검색을 위해서만 사용하는 다른 열을 추가하여 소문자로 저장하는 것입니다. – Augusto