如何在Grails 2.4.X中获得自定义数据源参考?

时间:2019-05-06 18:24:39

标签: grails groovy datasource gorm

我需要从Grails 2.4.5中的自定义查找数据源查询SQL。我不能使用投影,因为SQL太复杂了。

文档Grails Docs没有提供关于这种情况的任何解释。

我无法在此查找数据库中创建“视图”或类似结构。

我的DataSource.groovy如下:

development {
    dataSource {
        dbCreate = "none"
        driverClassName = "oracle.jdbc.OracleDriver"
        url = "jdbc:oracle:thin:@//XXXXXXX:1521/main-server"
    }
    lookup {
        dbCreate = "none"
        driverClassName = "oracle.jdbc.OracleDriver"
        url = "jdbc:oracle:thin:@//XXXXXXX:1521/lookup-server"
    }
}

我在其中执行查询的服务类如下

class MyService {

    def dataSource

    def index() {

        // How can I define lookup datasource?
        def sql = new Sql(dataSource.lookup)

        def results = sql.rows("SELECT 1 from DUAL");

    }
}

1 个答案:

答案 0 :(得分:2)

您非常亲密。您需要按名称注入数据源,因此实际上您想要的是dataSource而不是lookup。在此示例中,我将您的lookup数据源重命名为dataSource_lookup,因此更清晰。

development {
    dataSource {
        dbCreate = "none"
        driverClassName = "oracle.jdbc.OracleDriver"
        url = "jdbc:oracle:thin:@//XXXXXXX:1521/main-server"
    }
    dataSource_lookup {
        dbCreate = "none"
        driverClassName = "oracle.jdbc.OracleDriver"
        url = "jdbc:oracle:thin:@//XXXXXXX:1521/lookup-server"
    }
}


class MyService {

    def dataSource_lookup

    def index() {

        // How can I define lookup datasource?
        def sql = new Sql(dataSource_lookup)

        def results = sql.rows("SELECT 1 from DUAL");

    }
}