Я разочаровался в поиске решения для моего предыдущего вопроса: Spring data - Упорядочить по умножению столбцов , потому что я не мог найти способ добиться этого таким образом.
ПроблемаЯ использую EntityManager
с CriteriaQuery
, и я пытаюсь найти способ поместить туда предложение ORDER BY, но с умножением на два столбца.Ex.вы храните в БД количество и цену за единицу чего-либо, и вы хотите упорядочить их по общей цене (сумма * единица измерения).
Но когда я пытаюсь cq.orderBy(cb.asc(r.get("amount * unitPrice")));
, даже когда оба атрибута находятся в моем DTO,Я всегда получаю java.lang.IllegalArgumentException: Unable to locate Attribute with the the given name [amount * unitPrice]
.Очевидно, я знаю, почему я получаю это исключение, но я не могу найти никакого обходного пути для выполнения такого запроса.
Я не могу использовать именованный запрос, так как мой запрос принимает фильтр, который я применяю к нему динамически -> Я не могу разместить "where id in ()
", так как пользователь не может выбрать какой-либо идентификатор, то есть он хочет показать все из них, и мой именованный запрос ничего не даст.И, конечно, я не могу помешать сортировке в бэкэнде, так как записей так много.
Я долго искал что-то, чтобы достичь этого, и не нашел решения, и я смогу »Я не верю, что это невозможно.