Я искал долго и упорно для ответа, но я не везло до сих пор.Я пытаюсь получить и отсортировать список объектов с помощью JPQL-запроса, но поскольку сам запрос использует много объединений между различными таблицами, это действительно сложно.
По сути, у нас есть сущность "Person"с полями
String name
List<Telephone> phones
List<Email> emails
List<Address> addresses
«Телефон», «Электронная почта» и «Адрес» - все это отдельные сущности, каждая из которых содержит свои собственные данные, например строковое поле «число» или что-то подобное (Address.street,Address.state).Таким образом, все четыре из этих объектов являются таблицами в базе данных.
Я хочу, чтобы пользователь мог сортировать список людей по любым конкретным данным.Прямо сейчас я хочу отсортировать по любому из следующих: имя человека, первый адрес электронной почты в списке адресов электронной почты, улица или штат первого адреса человека и т. Д.Поэтому, если список лиц имеет следующий вид:
Name Phone Number Street State
Mack 555-1234 1 Main Street WA
Andy 222-9999 2 Other Way RI
Wendy 222-3333 3 Wrong Way UT
, и я хочу, чтобы таблица сортировалась по штатам, список должен быть:
Name Phone Number Street State
Andy 222-9999 2 Other Way RI
Wendy 222-3333 3 Wrong Way UT
Mack 555-1234 1 Main Street WA
Я хочу, чтобы это былосделано с использованием запроса JPQL, поэтому список уже отфильтрован и отсортирован при передаче на веб-сервер для оптимизации производительности.Я также должен добавить, что я реализую функцию поиска, которая ищет во всех этих «столбцах» определенный термин.
Короче говоря, как мне написать JPQL-запрос, чтобы можно было получить список объектов Personкоторые были отсортированы по одному из этих столбцов?Моя реализация «SELECT DISTINCT»:
SELECT DISTINCT x FROM Person x, IN(x.phones) phones ORDER BY phones.number
не работает, так как таблица результатов требует сортировки столбца (что недопустимо, потому что список не может быть квалифицирован как список объектов Person), и я не могу использовать вложенные операторы SELECT для генерации результирующего набора, а затем извлекать из него список объектов Person.Есть ли простой способ сделать это?