Как отобразить поле ALIAS в Spring Data JPA - PullRequest
0 голосов
/ 28 августа 2018

Я не знаю, как отобразить поле псевдонима в Spring Data JPA.

Это мой код

@Query("Select b ,count(s) as countSeat  from Bus b join b.seat s where b.idbus = 1  and s.status.idstatus = 1 group by b.idbus ")
    List<Bus>findByID();

Я пишу метод запроса, чтобы взять все поля Entity Bus и считать все места с idstatus = 1. Я ставлю для подсчета (-ей) с псевдонимом countSeat

Все работает, и у меня есть такой результат

[[{"idbus":1,
   "driver":"Phan Viet Ha",
   "license":"61X-TN45",
   "route": {"idroute":2,"place":"Route 2 : Quan 6 - FSoft","price":65}, 
   "image":"https://www.sayingtruth.com/wp-content/uploads/2017/08/bus-donated-at-kotputli-rajasthan.jpg"},
     4]]

Вы можете видеть, что значение функции count равно 4, но это не отображает псевдоним countSeat. Как я могу это исправить

1 Ответ

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

Что вы подразумеваете под "дисплеем"? Вы должны подумать о том, какой тип Java имеет ваш набор результатов. Глядя на ваш запрос, вы не выбираете только Bus. Вы выбираете Bus и другое поле. Таким образом, результатом будет Tuple, где поле 0 является Bus, а поле 1 является целым числом. Оба этих имени не названы! Названы только поля внутри Bus.

Таким образом, вы можете либо создать тип DTO / Projection и создать его с помощью выражения конструктора в своем запросе , либо просто использовать Tuple .

Но фрагмент, который вы показали в конце, не ясно, что это такое. Это сериализованный JSON вашего результата? В этом случае самым простым решением будет DTO / проекция, поэтому вы можете назвать поле. В качестве альтернативы, вы можете создать JSON вручную, выбрав aliasName для поля. См. эту суть (не проверено мной).

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