Avec Spring CrudRepository Query; Je veux sélectionner des entités "DeviceType" avec sa propriété "name". Mais la requête suivante sélectionne les droits de manière sensible à la casse. Comment je le fais de manière insensible à la casse. Merci.
public interface DeviceTypeRepository extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType> {
public Iterable<DeviceType> findByNameContaining(String name);
}
Exactement comme @Peter mentionné dans le commentaire, ajoutez simplement IgnoreCase
:
public interface DeviceTypeRepository
extends CrudRepository<DeviceType, Integer>, JpaSpecificationExecutor<DeviceType> {
public Iterable<DeviceType> findByNameContainingIgnoreCase(String name);
}
Voir documentation pour une liste de tous les mots clés pris en charge dans les noms de méthodes.
La requête mongo de données Spring suivante fonctionne pour moi. Je préférerais utiliser List
au lieu de Iterator
public interface DeviceTypeRepository extends CrudRepository<DeviceType,Integer>, JpaSpecificationExecutor<DeviceType> {
List<DeviceType> findByNameIgnoreCase(String name);
}
Dans mon cas, ajouter IgnoreCase
ne fonctionnait pas du tout.
J'ai constaté qu'il était possible de fournir des options pour l'expression régulière, ainsi:
@Query(value = "{'title': {$regex : ?0, $options: 'i'}}")
Foo findByTitleRegex(String regexString);
L'option i
rend la requête insensible à la casse.
Pour ceux qui utilisent une requête JPA personnalisée Upper mot clé et toUpperCase help. Le code suivant fonctionne pour moi
return entityManager.createQuery("select q from "table " q where upper(q.applicant)=:applicant")
.setParameter("applicant",applicant.toUpperCase().trim()).getSingleResult();