2010-07-01 2 views

답변

1

MySQL varchar 유형은 대소 문자를 구분하지 않습니다. 원하는 것은 varbinary입니다.

CREATE TABLE IF NOT EXISTS `stuff` (
    `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, 
    `name` varbinary(255) NOT NULL   -- varbinary to be case sensitive 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
+0

'varchar'는 대소 문자를 구별하지 않습니다. 테이블의 데이터 정렬에 따라 다릅니다. 예를 들어,'utf8_unicode_cs'는 대소 문자를 구별하는 반면'utf8_unicode_cs'는 대소 문자를 구분하지 않습니다. – Mike

+0

그러나 자동 스키마 생성시 JPA가이를 자동으로 설정하도록하려면 어떻게해야합니까? 다른 컴퓨터 나 데이터베이스 인스턴스에서 프로그램을 사용할 때마다 생성 된 스키마를 손으로 조작하고 싶지 않습니다. – ali

+0

JPA에 대해서는 아무 것도 모르지만, [JPA/Hibernate, MySql 및 Tomcat을 사용하는 문자 인코딩 UTF-8] (http://mathiasrichrich.blogspot.com/2009/10/character-encoding-utf -8-with.html). 몇 가지 용도 일 수 있습니다. – Mike

7

당신의 분야에 @Column 주석을 사용하면 열에 대한 대소 문자를 구분 데이터 정렬을 지정할 수 있도록 할 수있다 columnDefinition 속성을 지정할 수 있습니다.

public abstract String columnDefinition

열의 DDL을 생성 할 때 사용된다

        (옵션) SQL 단편

.
        유추 된 유형의 열을 생성하기 위해 생성 된 SQL의 기본값.
        기본 : 귀하의 경우
                ""

는, 예를 들어, @Column 주석을 사용하여, 당신은 (

@Column을 사용 name = "NAME_COL", columnDefinition = "VARCHAR (250) COLLATE latin1_g eneral_cs ") 개인 문자열 이름;

+0

불행히도 작동하지 않습니다. 만약 JPA가 String 데이터 형을 컬럼에 매핑하는 데 문제가 있으며 예외를 throw하는 것으로 보입니다. – ali

+1

예외와 메시지를 제공 할 수 있습니까? 어떤 JPA 구현을 사용하고 있습니까? – jbindel

관련 문제