|
Преобразовать цепочку Stream API в JPQL
|
|||
---|---|---|---|
#18+
Есть следующая цепочка: Код: java 1. 2. 3. 4. 5. 6. 7. 8.
Сущности: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Необходимо заменить эту операцию со стримами на JPQL запрос в репозитории, который будет делать и возвращать то же самое. Код: java 1. 2. 3. 4. 5. 6. 7.
И как-то я застрял на группировке SELECT ... Код: java 1.
Я не понимаю, что я должен вернуть из SELECT'a чтобы положить всё это в тот самый Collection или ту же мапу (Map<String, List<GaUtm>>). Для группировки, наверное просто добавить: Код: java 1.
? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2020, 13:59 |
|
Преобразовать цепочку Stream API в JPQL
|
|||
---|---|---|---|
#18+
я не великий спец ни по JPA ни по SQL, но по-моему так не получится. Группировка в SQL она для вычисления агрегатов каких-то, а в коде выше у нас просто разбиение на группы идет. Не ну т.е. можно конечно и в group by сделать агрегат, который превратит курсор в массив записей, т.е. вернет курсор вида account login -> [item1, item2] но это уже будет какая-то специфическая для БД имплементация и я сильно удивлюсь, если такое есть из коробки в jpa, даже с кастомным диалектом будет непортируемый геморрой. Разбей на группы уже в java. P. S. сама идея разбить на группы, а потом вернуть "список списков" тоже сомнительна, т.к. его полезность по сравнению с мапой списков сильно ниже. Но может по условиям задачи так и надо, х.з. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2020, 15:49 |
|
Преобразовать цепочку Stream API в JPQL
|
|||
---|---|---|---|
#18+
chpasha, +1 Список списков черезчур имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2020, 16:08 |
|
Преобразовать цепочку Stream API в JPQL
|
|||
---|---|---|---|
#18+
Значит решение со стримами более "разумное"? Что можно изменить в стриме? По сути мне ключи не нужны, нужны только значения. И прочитав ваши комментарии, я подумал, зачем здесь группировка, если делается .values. P.S. Код достался по наследству. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2020, 16:15 |
|
Преобразовать цепочку Stream API в JPQL
|
|||
---|---|---|---|
#18+
Wasteland Rebel, Нужно отображение в бд. Или модель. Или то как выглядят данные в таблицах. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2020, 16:24 |
|
Преобразовать цепочку Stream API в JPQL
|
|||
---|---|---|---|
#18+
IMHO & AFAIK Если данные УЖЕ fetch'нуты в RAM, то смысл использовать SQL для ПОВТОРНОГО получения тех же данных - особого нет. Если данные НЕ fetch'нуты, то разумеется, лучше забрать только требующеся из БД ОДНИМ запросом и, при необходимости, потом доработать напильником. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2020, 16:30 |
|
Преобразовать цепочку Stream API в JPQL
|
|||
---|---|---|---|
#18+
Wasteland Rebel, Хммм... А почему ты сказал что новый метод повторяет выход старого, если типы возврата коллекции не совпадают? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2020, 16:36 |
|
Преобразовать цепочку Stream API в JPQL
|
|||
---|---|---|---|
#18+
Wasteland Rebel Значит решение со стримами более "разумное"? не обязательно. как Леонид написал выше, зависит от того - где данные. Если их нужно так или сяк грузить из БД, то конечно фильтрацию, сортировку и что угодно еще лучше делать там. Но то, что там сделать нельзя или можно только ценой какого-то жуткого подвыперда с припрыгиванием, то лучше на стороне явы. Wasteland Rebel зачем здесь группировка, если делается .values values возвращает список списков (что из сигнатуры метода тоже видно), т.е. каждый элемент в нем это N элементов с одинаковым accountlogin - т.е. даже без мапы группировка сохраняется. Потому я и написал выше, что странно это, т.к. обычно такое надо для последующего быстрого поиска по ключу в каком-то цикле, а без этого смысл не очевиден. нужно в вызывающем коде смотреть ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2020, 16:41 |
|
Преобразовать цепочку Stream API в JPQL
|
|||
---|---|---|---|
#18+
Обычно группируют чтобы выйти на результат: - список входов в систему Иванов 10Петров 15Сидоров 0 ... Это мапа строка-число из списка таблы всех входов в систему. Поэтому что именно надо от группировки необхолимо знать. Имхо ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2020, 16:54 |
|
|
start [/forum/topic.php?fid=59&msg=40024692&tid=2120591]: |
0ms |
get settings: |
11ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
30ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
192ms |
get tp. blocked users: |
0ms |
others: | 294ms |
total: | 538ms |
0 / 0 |