Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Query возможно ли в одном запросе часть результатов и их общее количество? / 22 сообщений из 22, страница 1 из 1
30.11.2016, 20:24
    #39358029
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
Здравствуйте, делается простой paging не спрашивайте почему так.
У нас руководство решило свой велосипед изобретать.. )))

Так вот, собственно вопрос. Можно ли как-то возможно ли как-то в одном JPQL запросе взять часть данных и получить их общее количество? Иначе придется один и тот же запрос делать 2 раза..

Обычный запрос. Дай мне тикеты которые соответствуют такому условию...
Ну и paging работает сл образом. Соответственно клиенту нужно знать обще количество найденных элементов, чтоб отобразить количество страниц.
Код: java
1.
2.
3.
4.
5.
SELECT t FROM Ticket t WHERE ...

.....

return query.setFirstResult(searchDto.getFirstResultIndex()).setMaxResults(searchDto.getPageSize()).getResultList()



Спасибо!
...
Рейтинг: 0 / 0
30.11.2016, 20:30
    #39358033
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
_webdev_Так вот, собственно вопрос. Можно ли как-то возможно ли как-то в одном JPQL запросе взять часть данных и получить их общее количество? Иначе придется один и тот же запрос делать 2 раза..
Поиском пользоваться религия не позволяет? Уже несколько раз обсуждали. JPQL ничем это просто упрощенная версия SQL с парой ORM фич. Ваш вопрос только так же относится к SQL, как и к JPQL. Можно ли такое сделать на SQL?


_webdev_Ну и paging работает сл образом. Соответственно клиенту нужно знать обще количество найденных элементов, чтоб отобразить количество страниц.

Именно по этой причине все давно от этого отказались. Навигация по всем страницам пользователю нафиг не нужна. Нужно видеть последние данные. Нужно немного более старые. Подумайте над юзабилити. Страницы остались в прошлом десятилетии.
...
Рейтинг: 0 / 0
30.11.2016, 20:32
    #39358034
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
_webdev_,

Ну, и нет ничего страшного в двух запросах. И переиспользовать можно через Criteria API или другие билдеры.
...
Рейтинг: 0 / 0
30.11.2016, 20:49
    #39358044
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
BlazkowiczПоиском пользоваться религия не позволяет? - Не понял к чему это, я же не холиварную тему по обсуждению JPQL создал.

В моем понимании getResultList() - вернет список обьектов типа Ticket как туда прикрутить еще и count непонятно пока, поэтому и спросил.

BlazkowiczИменно по этой причине все давно от этого отказались. Навигация по всем страницам пользователю нафиг не нужна. Нужно видеть последние данные. Нужно немного более старые. Подумайте над юзабилити. Страницы остались в прошлом десятилетии. - я с вами полностью согласен, такого же мнения. Но у людей которые это делают и у руководства - другое мнение...

BlazkowiczНу, и нет ничего страшного в двух запросах. И переиспользовать можно через Criteria API или другие билдеры. - иногда есть, немного страдает перформенс, когда даных тысячи..
...
Рейтинг: 0 / 0
30.11.2016, 20:50
    #39358046
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
_webdev_иногда есть, немного страдает перформенс, когда даных тысячи..
Ерунда.
...
Рейтинг: 0 / 0
30.11.2016, 20:52
    #39358048
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
_webdev_ В моем понимании getResultList() - вернет список обьектов типа Ticket как туда прикрутить еще и count непонятно пока, поэтому и спросил.
http://docs.oracle.com/javaee/6/api/javax/persistence/criteria/CriteriaBuilder.html#count(javax.persistence.criteria.Expression)
...
Рейтинг: 0 / 0
30.11.2016, 21:07
    #39358052
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
Blazkowicz http://docs.oracle.com/javaee/6/api/javax/persistence/criteria/CriteriaBuilder.html#count(javax.persistence.criteria.Expression) - Понял, значитс нельзя так как я хочу. Спасибо за ответ.
...
Рейтинг: 0 / 0
30.11.2016, 21:12
    #39358054
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
_webdev_,

Ну, можно всякие ухищрения применить, или штуки специфичные для определённого сервера. Но, в целом, они никакого выигрыша не дают.
...
Рейтинг: 0 / 0
30.11.2016, 21:15
    #39358057
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
BlazkowiczНу, можно всякие ухищрения применить, или штуки специфичные для определённого сервера. Но, в целом, они никакого выигрыша не дают. - Понял, Вашего ответа достаточно.
...
Рейтинг: 0 / 0
01.12.2016, 06:36
    #39358136
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
_webdev_ возможно ли как-то в одном JPQL запросе взять часть данных и получить их общее количество?
Код: java
1.
SELECT t FROM Ticket t WHERE ...



Спасибо!

Если вас и вашу систему не пугают монструозные запросы, то
Код: sql
1.
2.
SELECT t, (SELECT COUNT(t) FROM Ticket t WHERE ...)  as COUNT_ALL
FROM Ticket t WHERE ...
...
Рейтинг: 0 / 0
01.12.2016, 08:13
    #39358163
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
Может я и глупость напишу но... самое простое.
Получили ResultList - получили данные.
В классе, в котором получаем этот ResultList делаем переменную аля Integer c с геттерами и сеттерами и в этом же запросе после получения листа, берем его сайз и кладем в эту переменную.
Далее пользуемся и данными и этой переменной, которая количество покажет, в других классах.
...
Рейтинг: 0 / 0
01.12.2016, 08:14
    #39358164
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
не в этом же запросе, а в этом же методе*
...
Рейтинг: 0 / 0
01.12.2016, 10:25
    #39358255
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
SQL2008SELECT t, (SELECT COUNT(t) FROM Ticket t WHERE ...) as COUNT_ALL
FROM Ticket t WHERE ...

это хороший вариант , когда записей не много, но когда их приличное количество - будут тормоза при каждом обращении, если считывается по кускам. зато плюс - оператианая инфа о количестве.
как вариант - использование хранимых процедур с многожественным результсетом
...
Рейтинг: 0 / 0
01.12.2016, 11:54
    #39358333
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
вадя,
авторМожно ли как-то возможно ли как-то в одном JPQL запросе взять часть данных и получить их общее количество?
мое мнение:
1. решить как брать часть данных - paging
2. общее количество знать не обязательно - поиск в google
...
Рейтинг: 0 / 0
01.12.2016, 11:55
    #39358334
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
am_sasa,
ой это ТС
...
Рейтинг: 0 / 0
01.12.2016, 12:06
    #39358341
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
_webdev_У нас руководство решило свой велосипед изобретать.. )))
это не значит, что вы лично не должны смотреть ГОТОВЫЕ решения.
Что то вы не договариваете.
...
Рейтинг: 0 / 0
01.12.2016, 12:45
    #39358384
Пылинка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
_webdev_ - иногда есть, немного страдает перформенс, когда даных тысячи..
Когда данных тысячи, то послать упрощенный запрос с выброшенными внешними соединениями ?и, для JPQL - проекцией с одним count, гораздо проще и надежнее. Просто взять за правило - для кол-ва пишется отдельный запрос.
А в getResultList() сколько реально записей засунуть и сколько вы будете ждать? При постраничном же выводе относительно быстро получите свои 50 первых записей.

PS Аналогично было - там не тысячи, а местами сотни тысяч (вкладчики) строк - и тем не менее можно типа перелистать ВСЕХ по очереди, это при том что в строке часто десятки полей, часть вытаскивается довольно сложно (и дорого). Это менталитет такой у некоторых, но они - заказчики.
Надцать лет назад работал (недолго) в одной ... конторе (ОМС - там записей миллионы), и при всем г-кодерстве там было соглашение выводить на" постранично" только ограниченное кол-во записей, типа 300 - больше всё равно никто листать не будет, кто хочет дальше - пусть уточняет критерии фильтра.
...
Рейтинг: 0 / 0
01.12.2016, 18:13
    #39358796
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
SQL2008Если вас и вашу систему не пугают монструозные запросы, то - пасиб, как выше советовали - сделал как 2 запроса.

NixicВ классе, в котором получаем этот ResultList делаем переменную аля Integer c с геттерами и сеттерами и в этом же запросе после получения листа, берем его сайз и кладем в эту переменную. -
Код: java
1.
query.setFirstResult(searchDto.getFirstResultIndex()).setMaxResults(searchDto.getPageSize()).getResultList()

- у меня так, поэтому мне кажется, предложеный вами вариант работать не будет.

am_sasa2. общее количество знать не обязательно - поиск в google - а вот у нас PO считает по другому, и нужно делать так как он говорит.

Petro123это не значит, что вы лично не должны смотреть ГОТОВЫЕ решения.
Что то вы не договариваете. - немного не понял.. ))) Как это не договариваю. Новый архитектор решил, что будет круто, если мы все фреймворки из проекта выбросим и будем все делать ручками. Я лично не встречал такой функции в Query или CrieriaBuilder..
...
Рейтинг: 0 / 0
01.12.2016, 18:55
    #39358841
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
_webdev_,
Не встречал? А счас моё сообщение ты как читаешь?
Поиском по форуму хотя бы. Что в jsp, что спринге принципы одинаковы.
Я как раз, с пагинацией кругом вижу. А ты нет.
...
Рейтинг: 0 / 0
02.12.2016, 08:50
    #39359073
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
_webdev_ Новый архитектор решил, что будет круто, если мы все фреймворки из проекта выбросим и будем все делать ручками.
Реально круто!
Т.е. "дом строим, лепим свои кирпичи, куём гвозди и сами отливаем оконные стекла"?
Сотни-тысячи человеко-часов тестирования отработанных фреймворков на помойку, будем сами ходить по свежим граблям???
Это конечно не моё дело, но гоните вы этого архитектора взашей!
Хлебнёте вы с ним горя...
...
Рейтинг: 0 / 0
02.12.2016, 09:40
    #39359106
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
SQL2008Это конечно не моё дело, но гоните вы этого архитектора взашей!
Хлебнёте вы с ним горя...хм, это реально круто, согласен полностью!
...
Рейтинг: 0 / 0
05.12.2016, 10:26
    #39360255
_webdev_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Query возможно ли в одном запросе часть результатов и их общее количество?
SQL2008Реально круто!
Т.е. "дом строим, лепим свои кирпичи, куём гвозди и сами отливаем оконные стекла"?
Сотни-тысячи человеко-часов тестирования отработанных фреймворков на помойку, будем сами ходить по свежим граблям???
Это конечно не моё дело, но гоните вы этого архитектора взашей!
Хлебнёте вы с ним горя... - ))) У меня такое же мнение. Но тут где я работаю, часто принимаются "политические" решения. Біли жаркие споры и дискуссии.. Но.. Сейчас ищу новую работу, так как понимаю, что скоро будет хаос.. Та не, он уже помаленьку начинается.. Не хочу я тут этого горя хлебать. А да, это уже невозможно, так как уже год разработки и то что этот архитектор со своей командой наделал, и главное КАК - известно только ему. )))
SQL2008Т.е. "дом строим, лепим свои кирпичи, куём гвозди и сами отливаем оконные стекла"? - не, некоторые старые окна просто снимаем и переносим в новый дом, жуткое зрелище получается. ))))

Все держится на подпорочках. ))
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Query возможно ли в одном запросе часть результатов и их общее количество? / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]