2016-08-25 25 views
1

MySqlとMS SQLの両方で動作するアプリケーションを開発しています。SpringデータJPAとジオメトリタイプ

私には、空間の「ジオメトリ」タイプのフィールドがあります。使用することにより

@Column(columnDefinition = "geometry") 
private Point geometry; 

Hibernateはフィールド正しく(hbm2ddl)を作成する(ポイントorg.springframework.data.geo.Pointあります)。

ただし、任意のポイントを挿入しても機能しません。 データの切り捨て:GEOMETRYフィールドに送信するデータからジオメトリオブジェクトを取得できません。

私はspring-boot-jpa-starter ..を使用しており、休止状態ではありません。

<dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-spatial</artifactId> 
      <version>5.2.2.Final</version> 
     </dependency> 

よろしく、 イド

+0

「Hibernate Spatial dialect」を指定しましたか? http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#spatial –

+0

はい、あります。まだ動作していません –

+0

'Spring Data Repository'クラスと' Spring Boot'設定プロパティ/ ymlを共有できますか –

答えて

3

こんにちは私は正常にJPAでポイントをマッピングしました。ここに私がやったことだ:

  1. 私はMavenの上でこれを持っている:私は私のapplication.propertiesにこれを持って

    @Column(name = "locationpoint", columnDefinition = "POINT") 
    private Point locationpoint; 
    
  2. <dependency> 
        <groupId>com.vividsolutions</groupId> 
        <artifactId>jts</artifactId> 
        <version>1.13</version> 
    </dependency> 
    <dependency> 
        <groupId>org.hibernate</groupId> 
        <artifactId>hibernate-spatial</artifactId> 
        <version>5.2.5.Final</version> 
    </dependency> 
    
  3. 私は私のエンティティでこれを持っています:

    # needed for Location domain class 
    spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.mysql.MySQL56InnoDBSpatialDialect 
    
  4. 私はこの使用して値を取得することができます:私はマッティTahvonenの例ここから私の解決策をベース

    locationRepository.findOne((long) 1).getLocationpoint().getX(); 
    locationRepository.findOne((long) 1).getLocationpoint().getY(); 
    

を:

https://github.com/mstahv/spring-boot-spatial-example

は、この情報がお役に立てば幸いです。

関連する問題