2017-02-01 1 views
1

У меня есть два домена.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 и дает нуль.

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.

После не комментируя статический КартаЧто = «нет» в области XYZ я получаю объект сопоставления и соответствующая таблица не создается в БД из-за #dbCreate: «».

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

ответ

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

Смежные вопросы