Возврат не JSON-данных (Список объектов) из загрузочного контроллера Spring - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь получить связь OneToMany в моем весеннем загрузочном проекте. Когда я возвращаю ответ JSON от контроллера, он становится похож на обычный список строк вместо правильного JSON.Этот результат является результатом соединения из запроса JPQL,

Я добавляю здесь метод репозитория,

@Query("SELECT ur.userId , r.role FROM Roles r JOIN r.roleJoin ur")
List<Roles> findByRole();

И мой контроллер имеет следующий код:

@GetMapping("/check")
public List<Roles> check() {
    return repoObj.findByRole();
}

И получая ответ, подобный этому,

[[2,"A"],[649,"B"],[651,"C"],[653,"A"],[658,"A"],[3,"A"],[1,"B"],[670,"B"]]

Это выглядит как список объектов, но по умолчанию контроллер начальной загрузки возвращает данные в формате JSON.Но я только получаю, как следующее.Так как мне нужно получить доступ к JSON из моего внешнего приложения Angular.

Может кто-нибудь помочь мне уточнить, что нужно отправлять ответ в самом JSON, а не просто в списке?

1 Ответ

0 голосов
/ 25 августа 2018

Проблема в том, что проекция в вашем запросе не соответствует типу возврата.

Вы предполагаете, что получаете объекты типа Roles, но в своем запросе вы выбираете только ur.nuserId и r.srole_desc

Либо измените свой запрос на:

@Query("SELECT r FROM Roles r JOIN r.roleUserMappingJoin ur")

но это будет то же самое, что findAll ()

или создайте DTO, содержащее данные, которые вы хотите вернуть.

Подробнее о проекции и данных Spring JPA можно узнать здесь:

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...