Grails 3 - 域中的几何类型
Grails 3 - Geometry type in domain
我正在尝试向 Grails 3.3.8(当前最新版本)中的域对象添加一个点。 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)'
}
}
据我从 中得知,以上内容应该有效。但是当我 运行 Grails 项目时, table 没有创建。如果我从 mapping
中删除该行,则会创建 table,但 coords
的类型错误,varbinary(255)
.
Java版本:8
Grails 版本:3.3.8
数据库版本:SQLServer 2017
dialect = 'org.hibernate.dialect.SqlServer2008SpatialDialect'
应该是
dialect = 'org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect'
SRID 是按对象设置的,未初始化为列类型的一部分。
我正在尝试向 Grails 3.3.8(当前最新版本)中的域对象添加一个点。 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)'
}
}
据我从 mapping
中删除该行,则会创建 table,但 coords
的类型错误,varbinary(255)
.
Java版本:8
Grails 版本:3.3.8
数据库版本:SQLServer 2017
dialect = 'org.hibernate.dialect.SqlServer2008SpatialDialect'
应该是
dialect = 'org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect'
SRID 是按对象设置的,未初始化为列类型的一部分。