我是Spring Boot的初学者,需要一些问题。
在Spring Boot存储库中,我正在从MySQL数据库中获取数据。
我有两种类型的返回值。
a(返回值是我用@Entity标签定义的模型列表,此模型对应于MySQL中的表。例如:以下代码中的ZoneModel。
@Query(value = "select c from ZoneModel c where c.cityId = ?1")
public List<ZoneModel> getZonesInCity(String cityId);
在这种情况下,我的回答是:
[
{
"id": "1",
"cityId": "1",
"name": "Phoenix Marketcity",
"type": "Mall",
"locationLat": "12.9970372",
"locationLong": "77.6944303"
}
]
响应是键值对json。
b(返回值不直接对应于任何模型的任何模型或列表。它有其他列。
@Query(value = "select id, cityId, name, type, locationLat, locationLong," +
" (6371 * acos (n" +
"cos ( radians(?2) )n" +
"* cos( radians( locationLat ) )n" +
"* cos( radians( locationLong ) - radians(?3) )n" +
"+ sin ( radians(?2) )n" +
"* sin( radians( locationLat ) )n" +
")) as distanceInKmsn" +
"from zone where cityId = ?1n" +
"group by idn" +
"having distanceInKms < 150n" +
"order by distanceInKmsn", nativeQuery = true)
public List<Object[]> getZoneSuggestions(String cityId, String latitude, String longitude, Pageable pageable);
在这种情况下,响应是:
[
[
"1",
"1",
"Phoenix Marketcity",
"Mall",
"12.9970372",
"77.6944303",
0.19478083559705964
]
]
响应没有与列名相对应的键。
即使从存储库中的返回值不完全匹配任何模型的情况下,我如何将键值对响应作为列名作为列名返回?
public List<Object[]> getZoneSuggestions(String cityId, String latitude, String longitude, Pageable pageable);
您正在尝试将结果映射到List of Object arrays
。因此,春天做了您告诉它要做的事情,并将其映射到对象阵列列表中。
而是尝试一下:
public List<Map<String, Object>> getZoneSuggestions(String cityId, String latitude, String longitude, Pageable pageable);