域类映射:数据源无法正常工作

时间:2015-02-03 09:49:12

标签: oracle grails gorm ggts

我有以下需要映射到特定数据源(oracle)的域类,而其他所有域类都映射到默认的dataSource(mysql,它完美地运行)。

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

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

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

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

  

java.lang.IllegalStateException

     

类[mypackage.AccountWfm]上的方法在外面使用   Grails应用程序。如果在测试的上下文中运行使用   正确地模拟API或bootstrap 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)?

由于

1 个答案:

答案 0 :(得分: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中多个数据源的功能。文档也是一个很好的信息来源。