Hibernate no selecciona nada
Frecuentes
Visto 435 veces
3
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 ?
3 Respuestas
3
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
0
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
0
¿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 java mysql spring hibernate character-encoding or haz tu propia pregunta.
¿Has probado sin el parámetro characterEncoding? - Perception
Sí, pero sigue apareciendo el problema. - Andrey K.
¿Lo has probado manualmente en mysql para ver si la base de datos devuelve algo? - Woody
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. - Andrey K.