java - 如何使用 Spring-roo、hibernate-spatial、Postgres 9.3、postgis 2 对几何(Polygon,4258)等空间类型进行逆向工程?

标签 java hibernate postgis spring-roo spatial

首先,我从昨天开始将 hibernate-spatial 添加到 org.springframework.roo.addon.jpa 到 1.2.6.BUILD-SNAPSHOT。

通过对 org.springframework.roo.addon.jpa 的代码进行以下更改

addon-jpa/src/main/java/org/springframework/roo/addon/jpa/JdbcDatabase.java 的新行

HIBERNATE_SPATIAL_POSTGIS("HIBERNATE_SPATIAL_POSTGIS", "org.postgresql.Driver",
        "jdbc:postgresql://HOST_NAME:5432"), //

addon-jpa/src/main/resources/org/springframework/roo/addon/jpa/jpa-dialects.properties 的新行

HIBERNATE.HIBERNATE_SPATIAL_POSTGIS=org.hibernate.spatial.dialect.postgis.PostgisDialect

addon-jpa/src/main/resources/org/springframework/roo/addon/jpa/configuration.xml 的新行

        <database id="HIBERNATE_SPATIAL_POSTGIS">
        <dependencies>
            <dependency>
                <groupId>postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>9.1-901-1.jdbc4</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-spatial</artifactId>
                <version>4.0.1</version>
            </dependency>
            <dependency>
                <groupId>com.vividsolutions</groupId>
                <artifactId>jts</artifactId>
                <version>1.13</version>
            </dependency>
        </dependencies>
    </database>

在postgres数据库中,我有一个列geo,它是几何(Polygon,4258)

然后我运行以下 spring-roo 命令 “jpa setup --provider HIBERNATE --database HIBERNATE_SPATIAL_POSTGIS”并且工作正常。

当我运行“database introspect --schema sde_ar5”时

我在响应中得到以下地理列类型:

column name="geo" primaryKey="false" required="false" scale="0" size="2147483647" type="1111,geometry"

我运行命令 “数据库逆向工程师--schema sde_ar5 --package no.skogoglandskap.reveng.sde_ar5”

结果类型是列 geo 的字符串,而不是 com.vividsolutions.jts.geom.Polygon

@Column(name = "geo")
private String Ar5Flate.geo;

有人知道如何让逆向工程与 hibernate-spatial 和 spring-roo 一起正常工作吗?

谢谢拉尔斯

最佳答案

DBRE 插件使用 JDBC 驱动程序元数据来检查数据库。由于驱动程序只知道 JVM 类型,它不知道像 JTS Polygon 这样的自定义 Hibernate 类型,这就是因为您获得 String 类型的原因。

您应该根据需要自定义地理字段。

关于java - 如何使用 Spring-roo、hibernate-spatial、Postgres 9.3、postgis 2 对几何(Polygon,4258)等空间类型进行逆向工程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25540574/

相关文章:

java - 覆盖所有方法并自动传递第一个参数的装饰器

java - 什么时候打开和关闭数据库是值得推荐的?

ruby-on-rails - 如何在 ruby​​ on rails 中创建类似 has_many 关联的 hibernate ?

c# - Entity Framework DbGeography 没有正确计算面积?

java - 不应成为公共(public) API 一部分的公共(public)包/类

java - 当实体中存在关系时,我可以仅使用实体的 id 而不是从数据库中获取实体吗?

java - Hibernate ManyToOne 保存对象

postgresql - 另一组点的半径内的点数

postgresql - 在 "PARALLEL"处或附近创建 postgis 扩展语法错误

java - 通用编程、通用数据结构