Hibernate no selecciona nada

Tengo la tabla MySQL InnoDB codificada en utf-8. Esta tabla solo tiene un campo de identificación y nombre. Los nombres están en idioma ruso y 1 nombre en inglés para fines de prueba. El nombre en inglés se selecciona bien, pero al intentar seleccionar con el nombre en ruso, devuelve una lista vacía. Traté de crear consultas tanto con Criterion como con HQL.

getHibernateTemplate().find("from FirstName where name='free' ");
getHibernateTemplate().find("from FirstName where name='ИННА' ");

Aquí está la cadena de conexión - ?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8

estoy usando hibernate 3.2.7.ga y spring 2.5.6.SEC03

Aquí está el registro de hibernación:

Hibernate: /* from FirstName where name='ИННА'  */ select firstname0_.`id` as id1_24_, firstname0_.`name` as name2_24_ from `first_name` firstname0_ where firstname0_.`name`='ИННА' limit ?

preguntado el 12 de junio de 12 a las 11:06

¿Has probado sin el parámetro characterEncoding? -

Sí, pero sigue apareciendo el problema. -

¿Lo has probado manualmente en mysql para ver si la base de datos devuelve algo? -

Sql "SELECT * FROM first_name where name='ИННА';" en la herramienta de comando mysql devuelve un conjunto vacío ... pero en MySQL Query Browser devuelve 2 entradas. -

3 Respuestas

Gracias a todos, he encontrado una respuesta.

El problema estaba en la cadena de conexión. Refactoricé y moví la cadena de conexión al archivo de propiedades en lugar de xml con spring-bean. Pero yo no cambié"&" entidad al "&". La cadena de conexión exitosa está en el archivo de propiedades

jdbc:mysql://${host}:${port}/${database}?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8

Cambios en el archivo XML & entidades al formato correcto, pero las propiedades no hacen esto.

Respondido el 12 de junio de 12 a las 15:06

Criteria coCriteria = Session.createCriteria(coClass).add(Restrictions.eq(strColumnName, strColumnValue));
list = coCriteria.list();

¿Intentó con este criterio de hibernación?
Donde "Sesión" será el objeto de sesión de la sesión generada por hibernación.
1)coClass = "nombre de clase pojo"
2) strColumnName = "nombre de campo de clase pojo" en su caso será "nombre", supongo
3)strColumnValue = en su caso será "ИННА"

Respondido el 12 de junio de 12 a las 12:06

¿Intentó cambiar la codificación de caracteres a nivel de base de datos? Según la documentación de MySQL, los caracteres cirílicos son compatibles con "cp1251"

Puede echar un vistazo a este enlace así como

Respondido el 12 de junio de 12 a las 14:06

Sí, las tablas y el campo de la base de datos están en codificación UTF-8 y colación utf8_ci. - Andrey K.

¿Intentó definir su consulta usando: session.createSQLQuery(...)? Como esto le permitiría trabajar con "consultas nativas", al menos debería poder identificar dónde está realmente el problema: en el lado de la base de datos o en cómo Hibernate genera la consulta subyacente: kyiu

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.