Grails 3 - тип геометрии в домене - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь добавить Point к объекту домена в Grails 3.3.8 (текущий последний выпуск). Grails 3.3.8 использует Hibernate 5.1.5, который поддерживает hibernate-пространственный.

В 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, таблица не создается. Если я удаляю строку из mapping, таблица создается, но coords имеет неправильный тип, varbinary(255).

Java-версия: 8

Grails версия: 3.3.8

Версия базы данных: SQL Server 2017

1 Ответ

0 голосов
/ 05 ноября 2018
dialect = 'org.hibernate.dialect.SqlServer2008SpatialDialect'

вместо этого должно быть

dialect = 'org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect'

SRID устанавливается для каждого объекта и не инициализируется как часть типа столбца.

...