Не удалось получить ответ объекта массива в аннотации @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

Как @Nikolay дал подсказку в комментарии.

Результат собственного запроса не преобразуется автоматически в сущность, вы должны сделать это вручную или определить сопоставления с помощью @SqlResultSetMapping и @ ColumnResult.

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

@Entity
@Configurable
@SqlResultSetMapping(name = "someName", entities = @EntityResult(entityClass = SamplePojo.class), columns = @ColumnResult(name = "columnName"))
public class SamplePojo{
//fields and getters/setters
}

и затем в запросе

List<SamplePojo> list = entityManager().createNativeQuery("Select ......", "someName").getResultList();

Примечание: someName должно быть одинаковым в обоих местах.

См. этот вопрос

...