GrailsDomainBinder.getMapping(Doamin) возвращает ноль для непостоянного домена в 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.
После комментирования static mapWith = "none" в домене XYZ я получаю объект Mapping, и соответствующая таблица не создается в DB из-за #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