как отключить создание идентификатора gorm.mapping для каждой среды - PullRequest
0 голосов
/ 15 ноября 2011

Я работаю с oracle db на производстве, для которого у меня есть последовательности в gorm с генератором id по последовательностям.

Но теперь я хочу отключить все отображения для доменов только в разработке, где я используюhsqldb в файле.

Это сделано для того, чтобы не нужно было устанавливать Oracle для каждого ПК разработчика.

Я пробовал это с BootStrap:

import grails.util.GrailsUtil;

class DevBootStrap {

    def grailsApplication

    def init = { servletContext ->
        if(GrailsUtil.environment in ["development"]){
            grailsApplication.domainClasses.each { domainClass ->
                domainClass.metaClass.mapping = null
            }
        }
    }

    def destroy = {

    }

}

Но этоне работает.

Я также пытался с

grails.gorm.default.mapping = null

И тоже не работает.

Я думаю, что-то может быть в _Events.Но я не знаю, какое событие.

Можете ли вы дать мне указатель?

С уважением

Ответы [ 2 ]

0 голосов
/ 25 октября 2013

Я обнаружил, что вы можете получить доступ к текущей среде в сопоставлениях классов домена с помощью Environment.current.Таким образом, в каждом из ваших классов домена вы можете попробовать добавить:

static mapping = {
    if ( Environment.current != Environment.DEVELOPMENT ) {
        //define mapping 
    }
}  
0 голосов
/ 15 ноября 2011

Полагаю, это может сработать, однако вам нужно добавить .clazz, иначе вы играете в неправильных классах.

grailsApplication.domainClasses.each { domainClass ->
    domainClass.clazz.metaClass.mapping = null
}

Я не уверен, является ли момент времени, когдаВы меняете отображение достаточно рано.

...