Size: a a a

Java/Kotlin Web and more

2020 October 19

Y

Yegor in Java/Kotlin Web and more
Runtime rt = Runtime.getRuntime();
       Process process = rt.exec("cmd.exe /c start C:\\IPSC_creator\\IPSC_creator.bat");
источник

M

Maksat in Java/Kotlin Web and more
всем привет!
Есть в репозиторий метод Page<User> findByUsernameIn(List<String> username, Pageable pageable);

Как этот результат в виде Page<User> отсортировать в том порядке, в каком List<String> username передался в этот метод?
источник

ЯС

Ярослав Суханек... in Java/Kotlin Web and more
полагаю, можно попробовать использовать LinkedList
источник

ЯС

Ярослав Суханек... in Java/Kotlin Web and more
таким образом можно не сортировать, а просто сохранить порядок
источник

M

Maksat in Java/Kotlin Web and more
но мне важна пагинация
источник

M

Maksat in Java/Kotlin Web and more
или вы имеете ввиду аргумент указать как LinkedList?

Page<User> findByUsernameIn(LinkedList<String> username, Pageable pageable);
источник

ЯС

Ярослав Суханек... in Java/Kotlin Web and more
А, извините, не понял вопроса, тогда полагаю что можно сортировать отдельно после получения, но LinkedList все равно использовать придется, потому что при переборе просто List когда вы будете сортировать, порядок элементов не сохраняется
источник

ЯС

Ярослав Суханек... in Java/Kotlin Web and more
самым логичным, возможно будет сортировать и linkedlist и page одним и тем же способом, тогда они точно будут отсортированы одинаково (например по алфавиту) но если вам нужно именно воспроизвести порядок элементов из list username тогда вам предстоит самостоятельно написать функцию сортировки
источник

RS

Ruslan Stelmachenko in Java/Kotlin Web and more
Maksat
всем привет!
Есть в репозиторий метод Page<User> findByUsernameIn(List<String> username, Pageable pageable);

Как этот результат в виде Page<User> отсортировать в том порядке, в каком List<String> username передался в этот метод?
если нужна пагинация, то никак.
только писать кастомный ORDER BY в sql, который сортирует в порядке сортировки переданного набора строк (наверное такое можно как-то сделать с помощью CASE ... WHEN, но будет монструозно).
источник

C

Cyclone in Java/Kotlin Web and more
Maksat
всем привет!
Есть в репозиторий метод Page<User> findByUsernameIn(List<String> username, Pageable pageable);

Как этот результат в виде Page<User> отсортировать в том порядке, в каком List<String> username передался в этот метод?
сделай по типу
StringBuilder queryBuilder = new StringBuilder("select t.attrs,
decode(t.username, ");
for(int i = 0; i < sorted.size(); i++) {
queryBuilder.append('\''+sorted.get(i)+"', "+i);
}
queryBuilder.append(','+sorted.size()+") as sorting_index");

(ну или покрасивее IntStream'ом, суть та же)
Потом подзапрос и order by. Получится фигня вида

select * from (
select t.attrs,
decode(t.username, 'Петя', 0, 'Ваня', 1, 'Саша', 2,3) as sorting_index
) order by sorting_index, t.атрибут_для_сортировки_остальных

Если в твой БД нет decode, то аналогично через case when.
Но вообще какое-то говно ) Во-первых, конкатенировать sql не гут, надо защищаться от инджекшена, во-вторых производительность будет не очень, т.к. БД это не сможет закешить, в-третьих при слишком длинном листе сортировки накернится ограничение на длину чего-нибудь, например, самого запроса.
источник

C

Cyclone in Java/Kotlin Web and more
Возможны варианты с предварительной вставкой твоего отсортированного списка во временную таблицу и соединением с ней при выборке с общей сортировкой (я лично так не делал).
источник

M

Maksat in Java/Kotlin Web and more
спасибо за варианты, буду думать
источник

AK

Aleksei Koltcov in Java/Kotlin Web and more
Maksat
всем привет!
Есть в репозиторий метод Page<User> findByUsernameIn(List<String> username, Pageable pageable);

Как этот результат в виде Page<User> отсортировать в том порядке, в каком List<String> username передался в этот метод?
Я бы рассмотрел вариант передачи уже отсортированного списка и реализовал метод
findByUsernameInOrderByUsernameDesc (или Asc)
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
источник

AE

Alexandr Emelyanov in Java/Kotlin Web and more
Ярослав Суханек
полагаю, можно попробовать использовать LinkedList
Бред
источник

AE

Alexandr Emelyanov in Java/Kotlin Web and more
Ярослав Суханек
А, извините, не понял вопроса, тогда полагаю что можно сортировать отдельно после получения, но LinkedList все равно использовать придется, потому что при переборе просто List когда вы будете сортировать, порядок элементов не сохраняется
Бред 2
источник

ЯС

Ярослав Суханек... in Java/Kotlin Web and more
Даже не знаю что вам ответить на это, я вам не подхожу? Вы не перезвоните?
источник

AE

Alexandr Emelyanov in Java/Kotlin Web and more
Ярослав Суханек
Даже не знаю что вам ответить на это, я вам не подхожу? Вы не перезвоните?
Нет, просто делай сортировку Пейджа после получения
источник

ЯС

Ярослав Суханек... in Java/Kotlin Web and more
Alexandr Emelyanov
Нет, просто делай сортировку Пейджа после получения
последнее мое сообщение по этому поводу содержало именно такой совет
источник

AE

Alexandr Emelyanov in Java/Kotlin Web and more
Ярослав Суханек
последнее мое сообщение по этому поводу содержало именно такой совет
Да, только причем тут linked list
источник

ЯС

Ярослав Суханек... in Java/Kotlin Web and more
Alexandr Emelyanov
Да, только причем тут linked list
я перепутал list и к примеру hash map, да действительно, здесь он (linked list) не причём
но критика без предложения, это просто оскорбление, вы можете подсказать лучшее на ваш взгляд решение, поправить, дополнить, но на данный момент ваши комментарии бесполезны ни спрашивающему ни отвечающему
источник