我有以下需要映射到特定数据源(oracle)的域类,而其他所有域类都映射到默认的dataSource(mysql,它完美地运行)。
我的编辑器是GGTS,您可以注意到映射中的“数据源”带有下划线,好像它不是映射中的有效属性:
我还构建了一个简单的控制器:
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)?
由于
答案 0 :(得分:4)
查看Multiple datasources上的Grails文档。密切关注如何获得数据源的名称。您会注意到,由于Grails基于约定,因此命名约定为:dataSource_extraNameHere
,mapping
将使用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中多个数据源的功能。文档也是一个很好的信息来源。