Java Spring Boot MySQL-当MySQL查询结果与任何与任何数据库表相对应的模型匹配时,返回JSO



我是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);

相关内容

  • 没有找到相关文章