2012-01-04 3 views
0

최대 절전 모드 jpa 3.6.7을 사용하고 있습니다. 나는 국가 이름을 저장하고 나는 "Türkiye"라는 나라가있는 테이블을 가지고있다. 나는이 같은 쿼리를 썼다 :where 절이 비 영어 문자를 구별하지 않는 jpql select 쿼리

Query query = em.createQuery("SELECT COUNT(c) FROM EntityCountry c WHERE c.countryName = :country").setParameter("country", "turkiye"); 
long result = (long)query.getSingleResult(); 

결과는 내가 UTF8 데이터 정렬로 MySQL을 사용하고 있는데이 성공적으로 JPA와 터키어 문자를 삽입 할 수 있습니다 (1)을 반환합니다. 이 쿼리는 영어 이외의 문자와 대문자를 구별하지 않습니다. 도와주세요

답변

2

MySQL에는 대소 문자를 구분하는 자체 규칙이 있습니다. 문자열 사이의 비교는 대/소문자를 구분하지 않으며 기본적으로 데이터 정렬을 사용합니다. 대소 문자를 구분하지 않으려면 쿼리 또는 열 자체에서 이진 데이터 정렬을 사용해야합니다.

자세한 내용은 http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html을 참조하십시오.

+0

JB Nizet에게 다시 한 번 감사드립니다. 나는 데이터베이스와 테이블의 데이터 정렬을 모두 utf8_bin으로 변경하고 mysql을 재시작했지만 mysql에 따라 'u'와 'ü'사이에는 차이가 없다. 참고 : 실제로 대소 문자를 구분하지 않는 비교는 신경 쓰지 않습니다. – Deniz

관련 문제