Ne HQL ont un équivalent pour les Restrictions.ilike (comparaison insensible à la casse)?
J'ai écrit un projet pour Hibernate+MySQL. Maintenant, je suis le portage de Derby (pour diverses raisons).
Maintenant, j'ai découvert que le Derby est sensible à la casse lors de l'utilisation, COMME dans les requêtes. Ce pourrait être résolu à l'aide de Restrictions.ilike(...)
dans les Critères de requêtes... mais j'ai beaucoup de complexe des requêtes HQL que l'utilisation que. Est-il un moyen d'avoir une fonctionnalité similaire à ilike
dans les requêtes HQL?
Vous dites ne fonctionnera pas HQL dans la base de données Derby?
comme travail, mais sensible à la casse
comme travail, mais sensible à la casse
OriginalL'auteur gotch4 | 2011-11-02
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de
ilike
des fonctionnalités équivalentes dans les requêtes HQL. Comme Konstantin l'a déjà souligné dans son suggestion, votre meilleur choix est de paramétrer la connexion de base de données et définir classement àTERRITORY_BASED:SECONDARY
, comme expliqué dans ce JIRA: DERBY-1748: Global casse réglage.Prendre en compte que toutes les égalités (
=
) etlike
s sera insensible à la casse. Cela peut aller un peu trop loin, et ne sont pas appropriés pour votre situation particulière.Une autre façon d'aborder ce serait de la création basée sur la fonction d'index (si le Derby prend en charge, bien sûr) et de régler votre HQL pour combiner
like
etlower
comme ça.Si le Derby n'a pas l'appui du FBI (je crois qu'il n'est pas le cas), vous pouvez également créer déclencher rempli de colonnes avec des valeurs plus faibles et les indexer.
Mise à JOUR Il semble être possible de définir la dérivée/générée automatiquement les colonnes, comme expliqué dans cet autre JIRA: JIRA-481: mettre en œuvre SQL généré colonnes.
Il n'a pas d'autre choix s'il ne veut pas changer la connexion de classement. Et j'ai compris qu'il ne veut pas tourner dans les critères de requêtes.
Je le comprends - pourrait être l'enfer d'un refactoring et de test
J'ai commencé le pénible travail de la conversion de tout à des Critères... de cette façon, j'espère que je vais éviter à l'avenir.
si vous le souhaitez, vous pouvez utiliser le bouton "plus faible(de l'entité.champ) comme inférieur(?)" aussi, si vous souhaitez laisser DB, processus de la Chaîne en minuscules. Dans mon cas, je préfère cette façon de faire la déclaration la plus facile à lire...
OriginalL'auteur Xavi López
Je suis peur, il n'existe aucun moyen pour obtenir ce par le biais d'HQL, comme il est juste traduit SQL natif. Je pense qu'il pourrait être possible grâce à un réglage de schéma:
http://old.nabble.com/case-insensitive-searching-td17756019.html
OriginalL'auteur Konstantin Pribluda
une simple solution de contournement serait de convertir les deux mots à majuscules (ou inférieure) à quelque chose comme ceci:
de DomesticCat cat where upper(cat.nom) comme " VEN%'
références: http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html
OriginalL'auteur luisZavaleta