因此,如果我想使用Grails在支持多个数据源之前使用的会话进行直接SQL查询,我可以这样做:
def conn = new Sql(sessionFactory.currentSession.connection())
现在的问题是我有多个数据源,想要获取与特定数据源的连接。
我该怎么做?
TIA
答案 0 :(得分:14)
如果将DataSource.groovy中定义的数据源定义为“dataSource_foo”,则会有一个名为SessionFactory
的{{1}}。所以你可以像任何其他Spring bean一样依赖注入它:
sessionFactory_foo
并像这样使用它:
def sessionFactory_foo
答案 1 :(得分:1)
您可以使用Domain类引用绑定到会话,如下所示:
Book.withSession { session ->
def conn = new Sql(session.connection())
...
}
此方法不需要对数据源后缀进行硬编码引用。
答案 2 :(得分:0)
更好地声明你的bean(服务,控制器......)中的数据源被注入(这里不需要依赖Hibernate)
def dataSource
直接使用:
Sql sql = new Sql(dataSource)
如果您有多个数据源,请遵循命名约定
def dataSource_foo