У меня есть сценарий для извлечения информации из трех (Table1, Table2, Table4) таблиц на основе общего идентификатора Table1
Для извлечения информации из таблицы 4 я должен искать в другой промежуточной таблице (таблице 3) общий идентификатор между таблицей 3 и таблицей 4. Результат запроса информации таблицы 4 будет содержать более одной строки в качестве ответа на запрос.
Я написал следующий HQL (Hibernate Query) для своего требования
select t1,t2,(select t4.column1 from Table4 t4
join Table3 t3 on t4.column0=t3.column0 and t3.column1=t1 and t3.column2='desired_value') from Table1 t1
join Table2 t2 on t2.column1=t1.column1
where t1.column0=:id and t1.column3=:value
У меня есть классы сущностей для всех четырех таблиц.
Как я могу выбрать несколько строк из подзапроса
Что эквивалентно методу POSTGRESQL array_agg()/string_agg() в Spring Data JPA?
Без подзапроса я могу получить ответ Object[] с объектами класса Entity.
Как я могу добавить свой подзапрос, чтобы получить все нужные мне данные в одной транзакции, не создавая отдельный метод запроса в моем классе репозитория?
Что я пробовал до сих пор:
select t1,t2,(select new List(t4.column1) from Table4 t4
join Table3 t3 on t4.column0=t3.column0 and t3.column1=t1 and t3.column2='desired_value') from Table1 t1
join Table2 t2 on t2.column1=t1.column1
where t1.column0=:id and t1.column3=:value
Ниже приведен объект вывода, которого я пытаюсь достичь:
List<Object[]> as my query response
where each Object[] will be of size 3 with following
Object[0] -> Table1_Entity object
Object[1] -> Table2_Entity object
Object[2] -> will be a String[] containing a specific column values from Table4 Entity class
то есть ответ = [[obj1, obj2, [value1, value2, value3]], [obj3, obj4, [value1, value2, value3]], ......]