1

我怎么能在 Grails 2.0.4 中做这样的事情?

dataSource {

        dbCreate = "create-drop"
        String host = request.getServerName()
        switch( host ) {
            case "company1.com": url = "jdbc:mysql://localhost/db1"
            case "company2.com": url = "jdbc:mysql://localhost/db2"
            default: null
        }
}

我不想使用多租户核心插件

4

1 回答 1

4

Grails 2 支持多个数据源,因此您应该配置两个单独的数据源并让您的服务/域层在两者之间进行切换:

dataSource_company1 {
    dbCreate = "create-drop"
    url = "jdbc:mysql://localhost/db1"
}
dataSource_company2 {
    dbCreate = "create-drop"
    url = "jdbc:mysql://localhost/db2"
}

然后配置您的域对象以支持两者:

class Foo {
    static mapping = {
        datasources(['company1', 'company2'])
    }
    // ...
}

最后,根据请求使用数据源:

def company = request.serverName.split('.')[0]
def fooThings = Foo."$company".findAll()

您还可以将数据源自动连接到您的服务或控制器中并直接使用它们。

于 2012-06-23T11:38:14.440 回答