No hay ilike
funcionalidad equivalente en HQL. Como Konstantin ya ha señalado en su suggestion, su mejor opción es tune the database connection y establecer collation en TERRITORY_BASED:SECONDARY
, como se explica en esta JIRA: DERBY-1748: Global case insensitive setting.
Tenga en cuenta que todas las igualdades (=
) y like
s no distinguen entre mayúsculas y minúsculas. Esto podría ir demasiado lejos y no ser adecuado para su situación particular.
Otra forma de abordar esto sería crear índices basados en funciones (si Derby los admite, por supuesto) y ajustar su HQL para combinar like
y lower
de esta manera.
Query q = session.createQuery("... WHERE lower(entity.field) like ?)");
q.setString(0, '%' + variable.toLowerCase() + '%');
Si Derby no soporta de (creo que no) del FBI, que también podría crear columnas de gatillo fácil, con los valores más bajos y el índice de ellos.
ACTUALIZACIÓN Parece posible definir columnas derivadas/autogeneradas, como se explica en esta otra JIRA: JIRA-481: implement SQL generated columns.
¿Está diciendo ** como ** no funcionará HQL en la base de datos Derby? – ManuPK
como * will * work, pero distingue entre mayúsculas y minúsculas – gotch4