ignorecase dans les critères constructeur dans JPA
Comment peut-on faire un ignorecase dans les critères builder? Si j'ai
private final CriteriaBuilder cb
alors je ne peux utiliser cb.asc
ou cb.desc
mais pas ignorant la casse.
source d'informationauteur ronan
Vous devez vous connecter pour publier un commentaire.
1. Force Ignorecase en JPA Programme Fait le Travail, Répond le Q Directement
JPA COMMANDE PAR Deux Colonnes, Ignorant la casse:
JPA COMME, Ignorant la casse:
Suppose Person_ canonique méta-modèle de la classe a été générée à partir de la Personne de l'entité, afin de donner une forte tapé par l'utilisation de JPA critères de l'API.
ASTUCE: Pour de meilleurs performances & contrôle, envisager de convertir les colonnes de la chaîne en minuscules ou INITCAP cas une seule fois - lors de l'INSERTION/mise à JOUR dans la base de données. Faire la même conversion de la saisie par l'utilisateur des modèles de recherche.
2. Autre solution: Appliquez de Classement dans la Base de données des Meilleures Pratiques, plus Simple, Plus Performant
SQL-99 standard est doté d'un modificateur de comparer des caractères dans les Chaînes selon des règles:
Pouvez utiliser lors de la comparaison, de tri et de regroupement sur les cordes. Un exemple courant qui ignore la casse:
Ou
Vous pouvez même créer votre propre classement:
Classement est appliqué dans la base de données via l'une des options suivantes (à partir localisée à effet global):
Clause where (=, COMME, AVOIR, >, >=, etc)
Clause SELECT DISTINCT
Clause ORDER BY
Clause GROUP BY
Définition De La Colonne
La Définition Du Domaine De
Jeu De Caractères Définition
Les 4 premiers cas ne peut pas être utilisé avec JPA, parce que ces commandes SQL sont générés par JPA, et JPA standard ne prend pas en charge le classement.
3. ALTERNATIVE (PROPRIÉTAIRE) Oracle fournit également NLS paramètres pour ignorer la casse au sein de toute instance DB (peut être réglé dans les fichiers de config):
Plus de fonctions pour ignorer la casse comme
Vous pouvez appeler via
et ensuite appeler
criteriaQuery.orderyBy
ouselect
etc