域 class 映射:数据源不工作

Domain class mapping: datasource not working

我有以下域 class,我需要将其映射到特定数据源 (oracle),而我的所有其他域 classes 都映射到默认数据源 (mysql,效果很好)。

我的编辑器是 GGTS,您可以注意到 "datasource" 内部映射显示有下划线,就好像它不是有效的 属性 内部映射:

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

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

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

java.lang.IllegalStateException

Method on class [mypackage.AccountWfm] was used outside of a Grails application. If running in the context of a test using the mocking API or bootstrap Grails correctly.

最后,我的数据源(注意:在我的 /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)?

谢谢

查看 Multiple datasources 上的 Grails 文档。密切注意数据源的名称是如何到达的。您会注意到命名约定是:dataSource_extraNameHere,您的 mapping 将使用 extraNameHere.

,因为 Grails 是基于约定的

所以对于你的例子:

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
}

在你的域中 class 你的映射应该是这样的:

static mapping = {
  datasource = 'wfm'
}

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