1
我做JPQL查詢,像這樣自定義選擇@Query JSON鍵
@Repository
@Transactional
public interface UserFlightDao extends CrudRepository<UserFlight, Long> {
@Query("SELECT uf.departureGps, uf.flight.id, uf.flight.flightNumber, uf.flight.airline.name, uf.flight.departureDate, " +
"uf.flight.departureAirport.name FROM UserFlight uf WHERE user.id=?1")
List<UserFlight> getUserFlights(Long userId);
}
UserFlight
包含Flight
對象,我選擇從兩個UserFlight
和Flight
對象值,並將其返回給用戶的JSON 。
首先,我認爲使用List<UserFlight>
作爲返回類型(即使它有效)是錯誤的,因爲技術上我沒有返回完整的UserFlight
對象。對?也許我應該切換到List<Object>
。
第二件事,我希望返回給用戶的json包含關鍵名稱。目前我得到的json包含了一組對象,沒有它們各自的鍵名。響應示例:
[
[
"sdf",
1,
234234,
"American Airline",
{
"dayOfMonth": 13,
"dayOfWeek": "TUESDAY",
"dayOfYear": 286,
"monthValue": 10,
"month": "OCTOBER",
"year": 2015,
"hour": 18,
"minute": 41,
"nano": 0,
"second": 39,
"chronology": {
"id": "ISO",
"calendarType": "iso8601"
}
},
"dummy airport"
],
[
"asfsaf",
1,
234234,
"American Airline",
{
"dayOfMonth": 13,
"dayOfWeek": "TUESDAY",
"dayOfYear": 286,
"monthValue": 10,
"month": "OCTOBER",
"year": 2015,
"hour": 18,
"minute": 41,
"nano": 0,
"second": 39,
"chronology": {
"id": "ISO",
"calendarType": "iso8601"
}
},
"dummy airport"
]
]
任何想法如何獲取關鍵名稱以及值?我應該在從存儲庫收到List<Object>
後手動構建json還是有一個更簡單的方法?
這是我怎麼稱呼getUserFlights
感謝您的提示。我創建了一個類來保存你所建議的值(類沒有註釋,只有列子集的setter/getters),我使用了'SELECT new com.foo.bar.model.UserFlightLight(arg1,arg2..etc) '在jpql查詢中,一切都很好。 – prettyvoid