GrailsDomainBinder.getMapping(Doamin) возвращает значение null для непостоянного домена в Grails-3.2.4.

У меня Два домена.

class ABC{

    String xyz

    static mapping = {
        discriminator column: 'ABC_TYPE_ID'
    }
}

а также

class XYZ extends ABC{

    static mapWith = "none"

    static mapping = {
        discriminator value: 3
    }   
}

В Grails 2.5.5 строка ниже работает отлично, но после внесения необходимых изменений она не работает в Grails-3.2.4 и дает null.

Mapping mapping = new GrailsDomainBinder().getMapping(XYZ) //Works fine Grails 2.5.5

Mapping mapping = GrailsDomainBinder.getMapping(XYZ) // Giving null in Grails-3.2.4

Пожалуйста, помогите мне получить объект Mapping из домена XYZ.

Мои выводы:

Я использую oracle db с комментарием #dbCreate:'' в application.yml.

После комментирования static mapWith = "none" в домене XYZ я получаю объект Mapping, и соответствующая таблица не создается в БД из-за #dbCreate:''.

Есть ли проблемы с этим подходом? если да, пожалуйста, предоставьте мне альтернативные решения.


person Shashank.gupta40    schedule 01.02.2017    source источник


Ответы (1)


Часть статического состояния была удалена в последних версиях GORM. Вам нужно использовать объект MappingContext, чтобы получить то, что вы хотите:

MappingContext mappingContext = .. // can be injected via Spring
Mapping mapping = (Mapping)mappingContext.getPersistentEntity(Foo).mapping.mappedForm

См. http://gorm.grails.org/latest/hibernate/api/org/grails/datastore/mapping/model/MappingContext.html

person Graeme Rocher    schedule 01.02.2017