我有一个自定义的CriteriaQueryBuilder,在一种情况下,我用它来选择特定的String字段,按asc排序并忽略大小写
下面是代码示例:
UserSearchCriteriaBuilder userSearchCriteriaBuilder = userSearchCriteriaBuilderFactory.create();
CriteriaQuery criteriaQuery = userSearchCriteriaBuilder.create(id,userSearchDto);
Join<Company,Department> departmentJoin = userSearchCriteriaBuilder.getDepartmentJoin();
Path<String> selection = departmentJoin.get(Department_.name);
criteriaQuery.select(selection).distinct(true);
criteriaQuery.orderBy(entityManager.getcriteriaBuilder().asc(entityManager.getcriteriaBuilder().lower(selection)));
return entityManager.createQuery(criteriaQuery).getResultList();
此代码示例失败,并出现下一个错误:
Caused by: org.postgresql.util.PSQLException: ERROR: for SELECT DISTINCT,ORDER BY expressions must appear in select list
据我了解,它要求我在选择语句中包含更低的(选择)内容?
所以我的问题是如何使工作正常进行,因此它通过按大小写由asc排序的查询选择所有字符串。
PS我正在使用Spring Boot 2.1.7