5

次のテクノロジーの組み合わせで新しいプロジェクトをセットアップしようとしています

  • 休止状態 + 空間 5.0.1
  • PostgreSQL 9.4 と PostGIS 2.1.8
  • 春 4.2.1
  • JTS1.13

実在物。org.hibernate.spatial.GeometryType削除されたことがわかり、現在org.geolatte.geom.GeometryTypeは geo-latte-1.0.jar に移動されているようです

@Entity
@Table(name = "AREA")
@NamedQueries(@NamedQuery(name = "findAllAreas", query = "SELECT t FROM Area t"))
public class Area {
    private long id;
    private String info;
    private Geometry location;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    @Column(name = "INFO")
    public String getInfo() {
        return info;
    }
    public void setInfo(String info) {
        this.info = info;
    }
    @Column(name = "POLYGON")
    @Type(type = "org.geolatte.geom.GeometryType")
    public Geometry getLocation() {
        return location;
    }
    public void setLocation(Geometry location) {
        this.location = location;
    }

}

春のセットアップ

<bean id="entityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan">
        <array>
            <value>org.example.entity</value>
        </array>
    </property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
    <property name="jpaProperties">
        <props>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
            <prop key="hibernate.dialect">org.hibernate.spatial.dialect.postgis.PostgisDialect
            </prop>
        </props>
    </property>
</bean>

<bean id="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.postgresql.Driver" />
    <property name="url" value="jdbc:postgresql://localhost:5432/sadb" />
    <property name="username" value="username" />
    <property name="password" value="password" />
</bean>

データベースのセットアップ

  • Windows ZIP 版
  • PostGIS インストールでコピー
  • 新しい PostGIS データベースと、すべての拡張機能 postgis、postgis_topology、fuzzystrmatch、postgis_tiger_geocoder を作成しました

結果

Area エンティティを問題なく永続化および取得できます。ただし、列のタイプはPostGIS空間タイプではなく、バイトデータのようです..何が間違っているのでしょうか?

sadb=> \d+ area;
                                 Table "public.area"
 Column  |          Type          | Modifiers | Storage  | Stats target | Description
---------+------------------------+-----------+----------+--------------+------------
 id      | bigint                 | not null  | plain    |              |
 info    | character varying(255) |           | extended |              |
 polygon | bytea                  |           | extended |              |
4

1 に答える 1

5

Hibernate 5+ では @Type アノテーションは必要ありません。それを含めると、私が見ていたエラーが発生するようです。削除すると問題が解決します。ポリゴン列には PostGIS タイプのジオメトリがあります。

于 2015-09-18T10:37:10.320 に答える