我想知道我们是否可以在Grails应用程序中配置2个数据源,我希望其中一个具有只读访问权限(select),另一个具有读写访问权限(创建,插入,更新...)
答案 0 :(得分:4)
对于2.0之前的应用,请使用http://grails.org/plugin/datasources/,并将其内置到Grails中 - 请参阅http://grails.org/doc/2.0.0.RC1/guide/conf.html#multipleDatasources上的文档
答案 1 :(得分:1)
是的,你可以 - 根据我的经验 - 你应该注意一些条件/限制。
知道这个: Grails 2 can't login with spring security when using multiple databases
文档http://grails.org/doc/2.0.0.RC1/guide/conf.html#multipleDatasources表示您可以通过域映射或使用服务和静态“数据源”属性在数据源之间切换。
我发现域映射确实有效,但单独的服务不起作用,从我解释文档的方式来看,我们应该能够做到。
2.1在Datasources.groovy中定义数据源: 您可以声明您希望域模型使用哪种数据源,这样可以正常工作。同样,声明您的域使用多个数据源,然后指定在控制器中使用哪个数据源: bookInstance.db1.save() 要么 bookInstance.db2.save()
或者,当数据源未知时,您可以这样做:
def ds =“db1”//或将其设置为您想要的任何内容,db1,db2,db3 ...... bookstance。 “$ DS” .save()
但是,如果你想使用服务来声明数据源,那对我来说根本不起作用。
static datasource =“db1”
无论如何,这在Grails Services中对我没用。
2.2在默认数据库中声明数据源,然后在运行时注入其他数据源。 文档说您可以在运行时注入新的数据源bean。而且你可以,但Grails并没有把它拿走。我无法让Grails知道新注入的数据源bean。因此,数据源必须在Datasource.grooy中预先声明
-