1

我有一个 PostgreSQL 表,其中包含许多其他列,一个空间列point。此空间列应以 geoJson 格式提供其内容。

一个普通的 SQL 应该是这样的:

select column1, column2, column3, ST_AsGeoJSON(point) from table;

和回写:

update table set column1 = 'abc', column2 = 'def', column3 = 'ghi', 
  point = ST_GeomFromGeoJSON('{ ... geojson ... }') 
  where id = ??;

我知道hibernate有一个扩展名为hibernate-spatial。但这个扩展适用于 postgis 1.5,它可以读取 geoJson,但不能解析 geoJson 并将其写回 PostgreSQL。另一个缺点:空间操作(如转换)是在服务器端完成的,而不是在数据库端。

是否有可能将 sql 函数注入到这样的查询中:

EntityManager em = emFactory.createEntityManager();
myModel selected = em.find(myModel.class, 1);

在 myModel 中,用于几何的列应该是String表示 geoJson 的 String 或继承的 String 类型。

我找到了 Hibernate Dialects,但它们似乎只适用于 HQL(或 JPL)。我想透明地使用这个geojson - 不与HQL结合使用(我被迫在代码中编写SQL,我不想要什么)。

也可以使用setCustomWritesetCustomRead但我没有找到任何如何使用它们的示例。

为了防止回答为什么我想将类型保留在 postgis-geometry 中 - 由于 db 端有其他与空间相关的操作,它应该保留在这种类型中。

4

1 回答 1

0

方言是用于休眠的,您只需使用 postgres 驱动程序...

于 2013-07-10T09:15:31.843 回答