|
Инструмент динамического формирования запроса (как в СКД) для Java
| ☑ |
0
GANR
08.08.21
✎
12:45
|
При просмотре 1С запроса (например, в консоли СКД), сформированного с применением настроек компоновки данных можно видеть, что отборы применились и к временным таблицам, и к итоговой таблице запроса. Предположим, есть запрос для Postgres, есть некий набор условий, логически похожий на отбор, который мы задаем в настройках компоновки данных.
Существует ли на Java нечто схожее по принципу действия?
|
|
1
ДенисЧ
08.08.21
✎
13:00
|
Hibernate?
а так - аналога нет. Жабисты брезгуют такими вещами.
|
|
2
GANR
08.08.21
✎
13:13
|
(1) Это ближе к CriteriaBuilder, но по-моему прям как СКД на вложенные запрос и временные таблицы он условия наложить не может. Это надо внутри библиотеки по сути запрос пропарсить и разложить его в объект и там, где надо условия вшить, а потом собрать обратно в запрос.
|
|
3
Asmody
08.08.21
✎
13:41
|
|
|
4
mistеr
08.08.21
✎
13:41
|
(2) СКД не вставляет условия в запрос. Она генерирует запрос с учетом отборов.
|
|
5
Asmody
08.08.21
✎
13:42
|
Ещё пишут про jooq, но оно за деньги
|
|
6
Конструктор1С
08.08.21
✎
14:33
|
Так ведь в Java принято "собирать" текст запроса через Hibernate, по типу ручного сбора текста запроса в 1с через объектную модель СхемаЗапроса. Какие надо отборы, такие на лету и добавил
|
|
7
GANR
08.08.21
✎
15:13
|
(6) На входе у нас запрос текстом, строк эдак 400. Вот его надо в объектную модель вогнать и как-то добавить отборчики. Причем, чтобы работал быстро, надо не только на верхний уровень наложить отбор, но и на вложенные запросы. Правильно понимаю, что тут без рекурсивного обхода объектной модели запроса никак?
|
|
8
GANR
08.08.21
✎
15:15
|
Запрос имеет на входе параметр ИНН, допустим. И куча таблиц, из которых надо по нему фильтровать. Вот надо к каждому подзапросу фильтр добавить.
|
|