Grails 2.4.2-动态引用默认数据源

瑞安·埃德加(Ryan Edgar)

这里已经部分回答这个问题但是动态引用默认数据源仍然存在问题。

我正在开发一个内部应用程序,允许开发人员修改其中一个多租户应用程序的配置设置,并将这些设置从开发人员推送到测试,暂存和生产。其中的每一个都将拥有自己的数据源,并且Grails应用将安装在每个开发人员的计算机上。

本地数据源将是默认数据源,然后dataSource_testing,dataSource_staging等将引用适当的环境。

我可以通过以下方式动态引用远程数据源:

def setting = Setting."${params.environmnet}".get(id)

但是,如果params.environment引用默认数据源,则此代码不再起作用。在用于设置域类的文档中,它指出:

如果域类使用默认的数据源和一个或多个其他数据源,请使用特殊名称“ DEFAULT”来指示默认的数据源

请参阅说明文件

在定义您的域类适用于哪些数据源时,它看起来像在工作,但是不能像这样引用您的域类def setting = Setting.DEFAULT.get(id)您收到错误说明:

无此类属性:默认为班级...

我真的真的不想重新设计应用程序,以便不真正使用默认数据源,然后创建一个新的dataSource_local数据源。如果可以避免的话,那就太好了,因为这意味着更新仅适用于本地数据源的代码堆栈。

所以我的问题...是否有办法动态引用默认数据源?

拉里·霍塔里(Lari Hotari)

目前尚不支持,但是您可以进行一些修改以添加缺少的元方法(getDEFAULT)。

如果您认为这是一项重要功能,则可以在Grails Jira上进行功能请求。通过添加一个单独的方法来查找给定数据源的所谓GormStaticApi实例来支持静态访问(CompileStatic)可能是有意义的。请向Grails Jira添加功能请求,以说明您的用例。

现有的实现会跳过DEFAULT数据源:

Hibernate4的逻辑:https : //github.com/grails/grails-data-mapping/blob/f9da9fe/grails-datastore-gorm-hibernate4/src/main/groovy/org/codehaus/groovy/grails/orm/hibernate /cfg/HibernateUtils.groovy#L122-L125和Hibernate3:https : //github.com/grails/grails-data-mapping/blob/f9da9fe/grails-datastore-gorm-hibernate/src/main/groovy/org/codehaus /groovy/grails/orm/hibernate/cfg/HibernateUtils.groovy#L121-L124

解决方法是将下面的此类保存在grails-app / conf / WorkaroundsBootStrap中:

import org.codehaus.groovy.grails.commons.DomainClassArtefactHandler
import org.codehaus.groovy.grails.commons.GrailsApplication
import org.codehaus.groovy.grails.commons.GrailsClass
import org.codehaus.groovy.grails.commons.GrailsDomainClassProperty
import org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsHibernateUtil
import org.codehaus.groovy.grails.orm.hibernate.cfg.HibernateUtils

class WorkaroundsBootStrap {
    GrailsApplication grailsApplication
    def dataSource
    def transactionManager
    def hibernateDatastore

    def init = { servletContext ->
        def datasourceName = GrailsDomainClassProperty.DEFAULT_DATA_SOURCE
        for(GrailsClass grailsClass in grailsApplication.getArtefacts(DomainClassArtefactHandler.TYPE)) {
            def dc = grailsClass
            if (GrailsHibernateUtil.isMappedWithHibernate(dc) && GrailsHibernateUtil.usesDatasource(dc, datasourceName)) {
                HibernateUtils.registerNamespaceMethods dc, hibernateDatastore, datasourceName, transactionManager, grailsApplication
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用功能中的数据源(动态数据源)-Select2 v4

来自分类Dev

如何在Linux / Grails / Groovy环境中的Grails h2数据源中“查看数据”?

来自分类Dev

为Log4j2配置Grails 3

来自分类Dev

mvc2 dropdownlist数据源

来自分类Dev

如何告诉Grails插件使用辅助数据源(不是默认数据源)?

来自分类Dev

如何告诉Grails插件使用辅助数据源(不是默认数据源)?

来自分类Dev

Grails 3.1.0.M2数据库逆向工程

来自分类Dev

Grails 3.1.0.M2数据库逆向工程

来自分类Dev

Select2.js v4.0:如何使用本地数组数据源设置默认选择的值?

来自分类Dev

用于 DailyRollOver 的 grails 2+ 的 log4j 配置不起作用

来自分类Dev

尚未为数据源“ DataSet2” -SSRS提供数据源实例

来自分类Dev

JNDI数据源的WSO2“使用数据源工厂”选项

来自分类Dev

尚未为数据源“ DataSet2” -SSRS提供数据源实例

来自分类Dev

Angular2 Ag-grid数据源

来自分类Dev

关于WSO2 API Manager数据源

来自分类Dev

Spring Boot 2-MySQL数据源

来自分类Dev

绑定到2个数据源

来自分类Dev

条件StreamFallback数据源(DNN / 2sxc)

来自分类Dev

rrdtool 更新预期的 2 个数据源

来自分类Dev

使用Grails插件数据源

来自分类Dev

Grails-多个数据源

来自分类Dev

导出grails 2插件到grails 3时出错

来自分类Dev

如何在Spring Security和默认数据库H2中使用Grails数据库迁移?

来自分类Dev

如何在Spring Security和默认数据库H2中使用Grails数据库迁移?

来自分类Dev

在Grails中,如何获得对特定类使用的数据源的引用?

来自分类Dev

您可以在Grails数据源配置文件中引用远程资源吗?

来自分类Dev

在Grails中,如何获得对特定类使用的数据源的引用?

来自分类Dev

div中有2个按钮的grails

来自分类Dev

div中有2个按钮的grails

Related 相关文章

  1. 1

    使用功能中的数据源(动态数据源)-Select2 v4

  2. 2

    如何在Linux / Grails / Groovy环境中的Grails h2数据源中“查看数据”?

  3. 3

    为Log4j2配置Grails 3

  4. 4

    mvc2 dropdownlist数据源

  5. 5

    如何告诉Grails插件使用辅助数据源(不是默认数据源)?

  6. 6

    如何告诉Grails插件使用辅助数据源(不是默认数据源)?

  7. 7

    Grails 3.1.0.M2数据库逆向工程

  8. 8

    Grails 3.1.0.M2数据库逆向工程

  9. 9

    Select2.js v4.0:如何使用本地数组数据源设置默认选择的值?

  10. 10

    用于 DailyRollOver 的 grails 2+ 的 log4j 配置不起作用

  11. 11

    尚未为数据源“ DataSet2” -SSRS提供数据源实例

  12. 12

    JNDI数据源的WSO2“使用数据源工厂”选项

  13. 13

    尚未为数据源“ DataSet2” -SSRS提供数据源实例

  14. 14

    Angular2 Ag-grid数据源

  15. 15

    关于WSO2 API Manager数据源

  16. 16

    Spring Boot 2-MySQL数据源

  17. 17

    绑定到2个数据源

  18. 18

    条件StreamFallback数据源(DNN / 2sxc)

  19. 19

    rrdtool 更新预期的 2 个数据源

  20. 20

    使用Grails插件数据源

  21. 21

    Grails-多个数据源

  22. 22

    导出grails 2插件到grails 3时出错

  23. 23

    如何在Spring Security和默认数据库H2中使用Grails数据库迁移?

  24. 24

    如何在Spring Security和默认数据库H2中使用Grails数据库迁移?

  25. 25

    在Grails中,如何获得对特定类使用的数据源的引用?

  26. 26

    您可以在Grails数据源配置文件中引用远程资源吗?

  27. 27

    在Grails中,如何获得对特定类使用的数据源的引用?

  28. 28

    div中有2个按钮的grails

  29. 29

    div中有2个按钮的grails

热门标签

归档