Java:如何将从PostgreSQL查询返回的JSON数据分配或读取到JPA Repository方法中 [查询:SELECT row_to_json...]

问题描述

我在Spring Boot项目的JpaRepository中放置了以下代码查询返回的JSON结构如下所示。

我遇到错误解决[org.springframework.orm.jpa.JpaSystemException:否JDBC类型的方言映射:1111;嵌套的异常是org.hibernate.MappingException:JDBC类型的No Dialect映射:1111] *

  String queryString = "SELECT row_to_json(fc)\n" +
          " FROM ( SELECT 'FeatureCollection' As type,array_to_json(array_agg(f)) As features\n" +
          " FROM (SELECT 'Feature' As type\n" +
          ",ST_AsGeoJSON(lg.column1) As geometry\n" +
          ",row_to_json((column2,column3)) As properties\n" +
          "   FROM public.table As lg ) As f )  As fc;";


  @Query(value=queryString,nativeQuery=true) 
  Json getData(@Param("id") Long id);

在application.properties文件中,我将方言设置为/为:

spring.jpa.database-platform=org.hibernate.spatial.dialect.postgis.PostgisDialect

查询返回一个GeoJson FeatureCollection对象,我想分配它或能够将其读入Java。

请问我这个问题的方式,我是新来的。

返回的GeoJson看起来像这样:

{"type" : "FeatureCollection","features" : [{"type": "Feature","geometry": {"type":"Point","coordinates":[1,1]},"properties": {"id": 1,"name": "one"}},{"type": "Feature","coordinates":[2,2]},"properties": {"id": 2,"name": "two"}},"coordinates":[3,3]},"properties": {"id": 3,"name": "three"}}]}

解决方法

我不知道您到底想在这里实现什么,但是您可能需要使用<canvas id="myChart" width="400" height="400"></canvas> <script> var ctx = document.getElementById('myChart').getContext('2d'); var myChart = new Chart(ctx,{ type: 'bar',data: { labels: ['Red','Blue','Yellow','Green','Purple','Orange'],datasets: [{ label: '# of Votes',data: [12,19,3,5,2,3],backgroundColor: [ 'rgba(255,99,132,0.2)','rgba(54,162,235,'rgba(255,206,86,'rgba(75,192,'rgba(153,102,255,159,64,0.2)' ],borderColor: [ 'rgba(255,1)',1)' ],borderWidth: 1 }] },options: { scales: { yAxes: [{ ticks: { beginAtZero: true } }] } } }); </script> 作为返回类型并以另一种方法解析该JSON字符串。