UTF8의 MySQL Case Sensitive Search (최대 절전 모드)
-
12-09-2019 - |
문제
사용자 이름을 확인 하고이 특정 사용자 이름에 대한 기타 정보를 검색 할 때 UTF8 Charset 및 UTF8 Collation이있는 로그인 테이블이 있습니다. HQL 쿼리는 소문자와 대문자로 동일한 결과를 제공합니다. 내 HQL 쿼리를 위해 어떻게해야합니까?
이것은 내 질문입니다.
return queryManager.executeQueryUniqueResult("select b.login from BranchEntity b where b.userName = ?", username);
해결책
가장 쉬운 방법은 칼럼 정의를 변경하여 케이스에 민감한 콜레이션을 사용하는 것입니다. utf8_bin
.
세부 사항은 다음과 같습니다 여기
다른 팁
수업을 추가하십시오
public class CollateDialect extends MySQLDialect {
@Override
public String getTableTypeString() {
return " COLLATE utf8_bin";
}
}
그리고 그것을 사용하십시오 :
cfg.setProperty("hibernate.dialect", "org.kriyak.hbm.CollateDialect");
이렇게하면 모든 쿼리가 훨씬 더 많은 쿼리가됩니다.
제휴하지 않습니다 StackOverflow