2009-01-28 22 views
8

Estoy tratando de usar el método JPA EntityManager find(). Mi clave principal es una cadena que corresponde al nombre de un usuario.JPA EntityManager find with case sensitive key

Estoy usando JPA/Hibernate/MYSQL.

Mi problema es una búsqueda del usuario 'David' coincide con el usuario 'david' debido, supongo, a la coincidencia de cadena insensible a mayúsculas y minúsculas en el MYSQL subyacente. ¡Esto me causa un montón de problemas!

¿Alguien ha encontrado una solución elegante para esto? Podría hacer una llamada SQL nativa y usar el operador BINARY como se documenta aquí: http://dev.mysql.com/doc/refman/5.0/en/charset-binary-op.html

¿Alguien tiene una mejor solución? Ta.

+0

se topó con esto hoy en día, es 2017 y esto todavía no es fijo. Tengo 'Ken' en mysql y em.find (clase, 'ken') devuelve un objeto con el nombre de usuario 'ken'. que causa que otro objeto relacionado con este usuario arroje FK inválido en delete. –

Respuesta

3

¿Se puede cambiar el tipo de columna para que no distinga entre mayúsculas y minúsculas? El MySQL guide tiene información sobre cómo hacerlo.

Esto es más o menos lo que encontraste con el operador binario pero se aplica al tipo de columna en lugar de cuando se ejecuta una SELECCIONAR

Cuestiones relacionadas