Escribí un proyecto de Hibernate+MySQL. Ahora estoy de portarlo a Derby (para un número de razones).

Ahora he descubierto que el Derby es sensible a mayúsculas y minúsculas cuando se utiliza COMO en las consultas. Esto podría ser resuelto mediante la Restricciones.ilike(...) en los Criterios de las consultas… pero he de muchos complejo consultas HQL que lo usan. Es allí una manera de tener una funcionalidad similar a la de ilike en HQL?

Le está diciendo a como no funcionará HQL en la base de datos Derby?
como será de trabajo, pero sensible a mayúsculas y minúsculas

OriginalEl autor gotch4 | 2011-11-02

3 Comentarios

  1. 17

    No hay ilike funcionalidad equivalente en HQL. Como Konstantin ya ha señalado en su sugerencia, tu mejor opción es sintonizar la conexión de base de datos y establecer intercalación a TERRITORY_BASED:SECONDARY, como se explica en esta JIRA: DERBY-1748: Global no distingue mayúsculas de minúsculas configuración.

    Tomar en cuenta que todas las igualdades (=) y likes será insensible a mayúsculas-minúsculas. Esto puede ir un poco demasiado lejos, y no ser adecuado para su situación particular.

    Otra manera de abordar esta sería la creación de índices basados en funciones (si Derby apoya, por supuesto) y ajustar el HQL para combinar like y lower como este.

    Query q = session.createQuery("... WHERE lower(entity.field) like ?)");
    q.setString(0, '%' + variable.toLowerCase() + '%');

    Si Derby no apoyo del FBI (creo que no), también podría crear trigger lleno de columnas con los valores más bajos y el índice de ellos.

    ACTUALIZACIÓN parece posible definir derivados de los/las columnas generadas automáticamente, como se explica en este otro JIRA: JIRA-481: implementar el SQL generado por las columnas de.

    pero gotch4 prefiere mantener sus consultas HQL
    Él no tiene otra opción si no desea cambiar la conexión de intercalación. Y comprendí que él no quiere convertirlos en los criterios de las consultas.
    Entiendo que él podría ser el infierno de una refactorización y pruebas
    Empecé el molesto trabajo de convertir todo a Criterios… de esta manera, tengo la esperanza de evitar esto en el futuro.
    si lo desea, puede utilizar «inferior(de la entidad.de campo) como inferior(?)» también, si usted desea dejar la base de datos para el proceso de la Cadena en minúsculas. En mi caso yo prefiero esta manera para que la instrucción sea más fácil de leer…

    OriginalEl autor Xavi López

Dejar respuesta

Please enter your comment!
Please enter your name here