2017-10-08 17 views
2

mysqlとspringブートでhibernate spatialを使いたいです。私は試しましたが失敗しました。 application.propertiesはmyqlとSpringブート1.5.7が動作しないHibernate-spatial jpa

spring.datasource.url=jdbc:mysql://localhost:3306/tour_management 
spring.datasource.username=root 
spring.datasource.password=admin 
endpoints.actuator.enabled=true 
endpoints.info.enabled=true 

spring.jpa.properties.hibernate.dialect = 
org.hibernate.spatial.dialect.mysql.MySQLSpatial5InnoDBDialect 
spring.jpa.database-platform = 
org.hibernate.spatial.dialect.mysql.MySQLSpatial5InnoDBDialect 



@Data 
@Entity(name = "Place") 
public class PlaceEntity extends BaseEntity { 
@Id 
@GeneratedValue 
@Column(name = "ID") 
private long id; 
@Column(name = "NAME") 
private String name; 
@Column(name = "CODE") 
private String code; 
@Column(name = "LONGITUDE") 
private Double longitude; 
@Column(name = "LATITUDE") 
private Double latitude; 

@Column(name = "LOCATION",columnDefinition = "geometry(Point,4326)") 
private Point location; 
} 

下に与えられたファイルしかしによって引き起こさ

buildscript { 
ext { 
    springBootVersion = '1.5.7.RELEASE' 
} 
repositories { 
    mavenCentral() 
    maven { 
     url "http://www.hibernatespatial.org/repository" 
    } 
} 
dependencies { 
    classpath("org.springframework.boot:spring-boot-gradle- 
plugin:${springBootVersion}") 
} 
} 
apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'org.springframework.boot' 
group = 'com.fm' 
version = '0.0.1-SNAPSHOT' 
sourceCompatibility = 1.8 
repositories { 
mavenCentral() 
maven { 
    url "http://www.hibernatespatial.org/repository" 
} 
} 
dependencies { 
compile('org.springframework.boot:spring-boot-starter-actuator') 
compile('org.springframework.boot:spring-boot-starter-data-jpa') 
compile('mysql:mysql-connector-java') 
compile('org.projectlombok:lombok:1.14.8') 
compile('org.springframework.boot:spring-boot-starter-web') 
compile('com.vividsolutions:jts:1.13') 
testCompile('org.springframework.boot:spring-boot-starter-test') 
} 

を展開するとき、私は例外を取得しています:org.hibernate.boot.registry.selector.spi.StrategySelectionException:解決できません戦略[org.hibernate.dialect.Dialect]としての[org.hibernate.spatial.dialect.mysql.MySQLSpatial5InnoDBDialect] at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:113)〜 [hibernate-core-5.0.12.Final .jar:5.0.12.Final]

バージョンに関連する問題はありますか?

答えて

3

我々は実行時に例外が一致した場合:StrategySelectorImplのソースコードを

Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.spatial.dialect.mysql.MySQLSpatial5InnoDBDialect] as strategy [org.hibernate.dialect.Dialect] at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:113) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]

:私たちはorg.hibernate.spatial.dialect.mysql.MySQLSpatial5InnoDBDialectクラスは、クラスローダによってロード可能ではないことを理解

@Override 
    @SuppressWarnings("unchecked") 
    public <T> Class<? extends T> selectStrategyImplementor(Class<T> strategy, String name) { 
     final Map<String,Class> namedStrategyImplementorMap = namedStrategyImplementorByStrategyMap.get(strategy); 
     if (namedStrategyImplementorMap != null) { 
      final Class registered = namedStrategyImplementorMap.get(name); 
      if (registered != null) { 
       return (Class<T>) registered; 
      } 
     } 

     try { 
      return classLoaderService.classForName(name); 
     } 
     catch (ClassLoadingException e) { 
      throw new StrategySelectionException(
        "Unable to resolve name [" + name + "] as strategy [" + strategy.getName() + "]" 
      ); 
     } 
    } 

を。おそらくクラスパスにはありません。

私は、あなたのHibernateバージョンと一致するHibernate空間依存性を加えるべきだと思います。

+0

私は、hibernate-core、hibernate-spatial&hibernate-entitymanager jarを追加しました。それから展開されましたが、別の問題が発生しました.DBにデータを挿入すると、次のエラーが発生します。 2017-10-09 03:14:52.343 WARN 6000 --- [nio-8080-exec-1] ohengine.jdbc.spi.SqlExceptionHelper:SQLエラー:1416、SQLState:22001 2017-10-09 03 :14:52.343 ERROR 6000 --- [nio-8080-exec-1] ohengine.jdbc.spi.SqlExceptionHelper:データ切り捨て:GEOMETRYフィールドに送信したデータからジオメトリオブジェクトを取得できません – flopcoder

+0

これは初期問題。問題を混在させないと、質問をより再利用可能にします。新しい質問を開き、関連コードのみをデータベースに挿入するコード/スクリプトと関係するエンティティで表示してください。 – davidxxx

関連する問題