具有不同顺序选择的条件查询失败,并且ORDER BY表达式必须出现在选择列表中

我有一个自定义的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

caonimabi1314520 回答:具有不同顺序选择的条件查询失败,并且ORDER BY表达式必须出现在选择列表中

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3064569.html

大家都在问