从Grails服务访问hibernate属性?

时间:2012-07-02 05:42:30

标签: hibernate grails

如何从Grails服务访问Hibernate属性?

在这种情况下,我必须将createSQLQuery用于遗留数据库,并且需要访问hibernate.default_schema属性才能构建有效的SQL语句。

class MyService {
    def sessionFactory

    def getRows() {
        def session = sessionFactory.currentSession
        session.createSQLQuery("SELECT * FROM schema.table").list()
    }
}

更新

有一个Grails 2.x多个数据源和Hibernate属性设置的怪癖。在其他数据源中设置的属性将应用于默认数据源。

必须在hibernate对象而不是datasource对象中设置属性:

datasource_ds2 {
    . . .
}
hibernate_ds2 {
    default_schema = "schema"
}

然后可以从grailsApplication中的hibernate配置访问它们:

def grailsApplication
assert grailsApplication.config.hibernate_ds2.default_schema == "schema"

1 个答案:

答案 0 :(得分:3)

它们存储在Config对象中,例如:

class MyService {

    def grailsApplication
    def sessionFactory

    def getRows() {

        def defaultSchema = grailsApplication.config.hibernate.default_schema
        def session = sessionFactory.currentSession
        session.createSQLQuery("SELECT * FROM ${defaultSchema}.table").list()
    }
}