我不知道如何在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。 我该如何解决
答案 0 :(得分:0)
“显示”是什么意思?您必须考虑一下结果集具有哪种Java类型。查看查询时,您并不仅选择Bus
。您选择Bus
和另一个字段。因此结果将是Tuple
,其中字段0是Bus
,字段1是整数。这两个名字都没有命名!只是内部 Bus
字段被命名。
因此,您可以创建DTO /投影类型并使用constructor expression in your query创建它,也可以只使用Tuple。
但是您最后显示的代码片段尚不清楚。那是您结果的序列化JSON吗?在这种情况下,最简单的解决方案是DTO /投影,因此您可以命名该字段。
或者,您可以手动构建JSON,以获取字段的aliasName
。参见this gist(未经我测试)。