如何使用条件构建器来忽略大小写查询.对于描述属性,我想做类似的事情upper(description) like '%xyz%'
我有以下查询
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();
Run Code Online (Sandbox Code Playgroud)
axt*_*avt 80
有一种CriteriaBuilder.upper()
方法:
personCriteriaQuery.where(criteriaBuilder.like(
criteriaBuilder.upper(personRoot.get(Person_.description)),
"%"+filter.getDescription().toUpperCase()+"%"));
Run Code Online (Sandbox Code Playgroud)
小智 15
如果数据库在列中包含带有字母如Fußballschuhe的德语单词,则java会将大写方法中的参数修改为FUSSBALLSCHUHE,并且查询将不匹配.在这种情况下,小写将起作用:
personCriteriaQuery.where(criteriaBuilder.like(
criteriaBuilder.lower(personRoot.get(Person_.description)),
"%"+filter.getDescription().toLowerCase()+"%"));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29243 次 |
最近记录: |