Получите ответ в формате JSON из аннотации @Query в Spring - PullRequest
0 голосов
/ 05 ноября 2018

Репозиторий

@Repository
public interface TestNativeQRepository extends CrudRepository<TestNativeQ, String> {
    @Query( value="SELECT qplt.name price_list_name,  qplab.status_code, qplab.start_date, (SELECT charge_definition_code FROM oalfsaas_repl.QP_CHARGE_DEFINITIONS_B WHERE charge_definition_id=qplab.charge_definition_id  ) chargedefinitioncode "
            + "FROM  pricelistsall qplab, PRICELISTSTL qplt "
            + " WHERE qplab.price_list_id  =qplt.price_list_id ", nativeQuery = false)
    public List<TestNativeQDTO> getAllDetails();
}

Фактический результат:

[{"ABC", "DEF", "15/05/2018", "XXZ"}]

Ожидаемый результат

[{name: "ABC", statuscode: "DEF", startDate: "15/05/2018", chargedefintioncode: "XXZ"}]

Запрос имеет более одной таблицы, а также подзапрос в списке столбцов.

1 Ответ

0 голосов
/ 05 ноября 2018

Вам понадобится выражение конструктора: https://javaee.github.io/tutorial/persistence-querylanguage006.html#BNBWC

например:.

SELECT NEW mypackage.TestNativeQDTO(qplt.name price_list_name,  qplab.status_code, qplab.start_date, (SELECT charge_definition_code FROM oalfsaas_repl.QP_CHARGE_DEFINITIONS_B WHERE charge_definition_id=qplab.charge_definition_id  ) chargedefinitioncode) [...]"

Я не уверен, работает ли он с подзапросами.

...