example - hibernate jpa criteriabuilder ignorar consultas de casos
jpa pdf (2)
Hay un método de CriteriaBuilder.upper()
:
personCriteriaQuery.where(criteriaBuilder.like(
criteriaBuilder.upper(personRoot.get(Person_.description)),
"%"+filter.getDescription().toUpperCase()+"%"));
Cómo hacer una consulta de caso como ignorar usando el generador de criterios. Para la propiedad de descripción, quiero hacer algo como la parte upper(description) like ''%xyz%''
Tengo la siguiente consulta
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Person> personCriteriaQuery = criteriaBuilder.createQuery(Person.class);
Root<Person> personRoot = personCriteriaQuery.from(Person.class);
personCriteriaQuery.select(personRoot);
personCriteriaQuery.where(criteriaBuilder.like(personRoot.get(Person_.description), "%"+filter.getDescription().toUpperCase()+"%"));
List<Person> pageResults = entityManager.createQuery(personCriteriaQuery).getResultList();
Si la base de datos contiene palabras en alemán con letras como Fußballschuhe en la columna, java modificará el parámetro en el método en mayúsculas a FUSSBALLSCHUHE y la consulta no coincidirá. Minúscula funcionará en este caso:
personCriteriaQuery.where(criteriaBuilder.like(
criteriaBuilder.lower(personRoot.get(Person_.description)),
"%"+filter.getDescription().toLowerCase()+"%"));