我试图在Grails 3.3.8 (当前最新版本)中向域对象添加一个Point。Grails 3.3.8使用Hibernate 5.1.5,它支持hibernate-spatial。
在build.gradle中:
compile group: 'org.hibernate', name: 'hibernate-spatial', version: '5.1.5.Final'
compile group: 'com.vividsolutions', name: 'jts', version: '1.13'在配置中:
driverClassName = 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
dialect = 'org.hibernate.dialect.SqlServer2008SpatialDialect'在域中,PointTest.groovy:
package com.test
import com.vividsolutions.jts.geom.Point
class PointTest {
Point coords
static constraints = {
}
static mapping = {
coords sqlType: 'geometry(Point,4326)'
}
}根据我从this post on Stack Overflow中所能看出的,上面的内容应该是有效的。但是,当我运行Grails项目时,没有创建表。如果我从mapping中删除行,就会创建表,但是coords的类型是错误的,varbinary(255)。
Java版本:8
Grails版本: 3.3.8
数据库版本: Server 2017
发布于 2018-11-05 03:59:39
dialect = 'org.hibernate.dialect.SqlServer2008SpatialDialect'反而应该是
dialect = 'org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect'SRID设置为每个对象,而不是作为列类型的一部分初始化。
https://stackoverflow.com/questions/53146635
复制相似问题