0

我有以下需要映射到特定数据源(oracle)的域类,而我的所有其他域类都映射到默认数据源(mysql,它工作得很好)。

我的编辑器是 GGTS,您可以注意到映射内的“数据源”带有下划线,就好像它不是映射内的有效属性一样:GGTS 截图

我还构建了一个简单的控制器:

class AccountWfmController {
    def index() {
        render AccountWfm.list() as JSON
    }
}

尝试调用控制器方法index时,出现以下异常:

java.lang.IllegalStateException

类 [mypackage.AccountWfm] 上的方法在 Grails 应用程序之外使用。如果在使用模拟 API 或引导 Grails 的测试环境中正确运行。

最后,我的数据源(注意:在我的/lib文件夹中ojdbc6.jar):

dataSourceWFM {
    pooled = true
    dialect = org.hibernate.dialect.Oracle10gDialect
    driverClassName = 'oracle.jdbc.OracleDriver'
    username = "username"
    password = "password"
    url = "jdbc:oracle:thin:@192.168.1.1:1521:SID"
    dbCreate = '' //none, I have readonly access
}

关于这里发生的事情的任何提示(Grails 2.4.3)?

谢谢

4

1 回答 1

4

查看有关Multiple datasources的 Grails 文档。密切注意数据源的名称是如何得出的。您会注意到,由于 Grails 是基于约定的,因此命名约定是:dataSource_extraNameHeremapping将在哪里使用extraNameHere.

所以对于你的例子:

dataSource_wfm {
    pooled = true
    dialect = org.hibernate.dialect.Oracle10gDialect
    driverClassName = 'oracle.jdbc.OracleDriver'
    username = "username"
    password = "password"
    url = "jdbc:oracle:thin:@192.168.1.1:1521:SID"
    dbCreate = '' //none, I have readonly access
}

在您的域类中,您的映射应如下所示:

static mapping = {
  datasource = 'wfm'
}

希望这有助于阐明 Grails 中多个数据源的功能。该文档也是一个很好的信息来源。

于 2015-02-03T09:59:19.863 回答