如何在Spring Data JPA中显示ALIAS FIELD

时间:2018-08-28 02:20:40

标签: spring-data-jpa

我不知道如何在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();

我编写查询方法以获取实体总线的所有字段并计算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 :(得分:0)

“显示”是什么意思?您必须考虑一下结果集具有哪种Java类型。查看查询时,您并不仅选择Bus。您选择Bus和另一个字段。因此结果将是Tuple,其中字段0是Bus,字段1是整数。这两个名字都没有命名!只是内部 Bus字段被命名。

因此,您可以创建DTO /投影类型并使用constructor expression in your query创建它,也可以只使用Tuple

但是您最后显示的代码片段尚不清楚。那是您结果的序列化JSON吗?在这种情况下,最简单的解决方案是DTO /投影,因此您可以命名该字段。 或者,您可以手动构建JSON,以获取字段的aliasName。参见this gist(未经我测试)。