我使用jdbc将ormlite连接到postgresql数据库。我的数据结构是预定义的,并且包含一个名为geometry的Postgis数据类型。该数据类型可以包含GIS应用程序的不同几何结构(点,线串,多边形等)。 Natively Postgis可以将此数据类型转换为geoJson或任何其他字符串格式相关的格式。使用PostGIS与ormLite
当我直接使用带Postgis的ormLite(作为字符串)时,它给了我一个二进制格式。所以我想使用postgis函数将这种二进制格式转换为geoJson,KML。
在SQL它看起来像这样:
select ST_AsGeoJson(geometrycolumn) from table;
或
update table set geometrycolumn = ST_GeomFromGeoJSON('{"type":"Point","coordinates":[-5.5,7.2]}')
在这种几何列应该访问的模式(读/写)为一个字符串。
我试图使用ormlite persisters但这已经太晚了。目前,使用persister(通过resultToSqlArg
或parseDefaultString
),查询被发送到数据库,我无法编辑从postgres请求的列。 Mrog有一个solution与此有关的问题,但也使用persisters。
我也尝试用jdbc覆盖特定的类。但不知道如何“注入”sql函数。
或者我可以使用原始SQL查询。但是我需要使用的表中还有很多其他属性。我必须使用两个查询到数据库(一次是常规属性,一次是几何列)。而我的感觉不是使用原生的sql语句。
另一种解决方案是在数据库端创建一个geoJson列。 ormLite可以从中读取,并使用sql-trigger写入原始列。但那是一个糟糕的解决方案。
我真的必须创建自定义数据类型并在服务器端进行转换,而不是在数据库上进行转换吗?还是有解决方案来使用本地数据库功能?