MSSql 服务器 jpa 空间异常

MSSql server jpa spatial exception

是否可以在 jpa 中使用 sql 空间数据?我有 MS SQL Server 2014 Express Edition。我正在尝试按如下方式使用空间数据;

spring.jpa.hibernate.dialect=org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect

我得到以下异常;

"Hibernate: insert into sample_entity (age, author, date_created, date_updated, location, name) values (?, ?, ?, ?, ?, ?)

2017-07-13 16:49:53.655 WARN 6600 --- [main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL 错误:6522,SQL状态:S0001

2017-07-13 16:49:53.656 ERROR 6600 --- [main] o.h.engine.jdbc.spi.SqlExceptionHelper:执行用户定义的例程或聚合时发生 .NET Framework 错误 "geography":

System.ArgumentException: 24204: 空间参考标识符 (SRID) 无效。指定的 SRID 必须与 sys.spatial_reference_systems 目录视图中显示的受支持的 SRID 之一相匹配。

System.ArgumentException:

在 Microsoft.SqlServer.Types.SqlGeography.set_Srid(Int32 值)

在 Microsoft.SqlServer.Types.SqlGeography.Read(BinaryReader r)

在 SqlGeography::.DeserializeValidate(IntPtr, Int32, CClrLobContext*) ."

有什么解决办法吗?或者,我做错了什么吗?

您遇到的问题是由于指定了不正确的方言 属性:

spring.jpa.hibernate.dialect

应该是

spring.jpa.properties.hibernate.dialect

整个字符串是:“spring.jpa.properties.hibernate.dialect=org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect”

然后,一切都应该正常工作。在spring:

的日志中可以看到
org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect