2010-07-01 14 views

Respuesta

1

MySQL varchar tipo no distingue entre mayúsculas y minúsculas. Lo que quiere es 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

No es estrictamente cierto que 'varchar' no distingue entre mayúsculas y minúsculas; depende de la intercalación de la tabla. Por ejemplo, 'utf8_unicode_cs' distingue entre mayúsculas y minúsculas, mientras que' utf8_unicode_cs' no lo es. – Mike

+0

Pero, ¿cómo puedo hacer que JPA lo establezca automáticamente en la creación automática del esquema? No quiero manipular manualmente el esquema generado cada vez que uso mi programa en una computadora diferente o instancia de base de datos. – ali

+0

No sé nada sobre JPA, pero acabo de encontrar [Character Encoding UTF-8 con JPA/Hibernate, MySql y Tomcat] (http://mathiasrichter.blogspot.com/2009/10/character-encoding-utf -8-con.html). Puede ser de alguna utilidad. – Mike

7

El @Column anotación en su campo puede especificar un atributo ColumnDefinition que puede permitirle especificar una intercalación mayúscula para la columna.

public abstract String columnDefinition

        El fragmento de SQL (opcional) que se utiliza al generar el DDL para la columna.
        Establece el valor predeterminado del SQL generado para crear una columna del tipo inferido.
        defecto:
                ""

En su caso, por ejemplo, mediante la anotación @Column, utilizaría

@Column (name = "NAME_COL", columnDefinition = "VARCHAR (250) COLLAR latin1_g eneral_cs ") private String name;

+0

Desafortunadamente no funciona. Si hago lo que se me indicó, parece que JPA tiene problemas para correlacionar el tipo de datos String con la columna y arroja una excepción. – ali

+1

¿Puede proporcionar la excepción y su mensaje? ¿Qué implementación de JPA estás usando? – jbindel

Cuestiones relacionadas