2010-07-01 42 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 2010-07-01 19:20:07

+0

但是我怎麼能讓JPA在自動模式創建時自動設置?每次我在不同的計算機或數據庫實例上使用我的程序時,我都不想手動操作生成的模式。 – ali 2010-07-01 19:23:46

+0

我對JPA一無所知,但我剛剛發現[使用JPA/Hibernate,MySql和Tomcat的字符編碼UTF-8](http://mathiasrichter.blogspot.com/2009/10/character-encoding-utf -8- with.html)。它可能有些用處。 – Mike 2010-07-01 19:30:03

7

@Column註解自己場上可以指定一個columnDefinition屬性,它可以讓你指定列區分大小寫的排序規則。

public abstract String columnDefinition

       (可選)SQL爲列生成DDL時使用片段。
       默認爲生成的SQL來創建推斷類型的列。
        默認:
                ""

在你的情況,例如,使用@Column批註,你可以使用

@Column( name =「NAME_COL」,columnDefinition =「VARCHAR(250)COLLATE latin1_g eneral_cs「) 私人字符串名稱;

+0

不幸運。如果我按照建議那樣做,似乎JPA將字符串數據類型映射到列出現問題並引發異常。 – ali 2010-07-02 05:05:59

+1

你能提供例外及其訊息嗎?你使用的是什麼JPA實現? – jbindel 2010-07-02 18:14:17

相關問題