从Grails服务访问hibernate属性?

从Grails服务访问hibernate属性?,hibernate,grails,Hibernate,Grails,如何从Grails服务访问Hibernate属性 在本例中,我必须对遗留数据库使用createSQLQuery,并且需要访问hibernate.default\u schema属性才能生成有效的SQL语句 class MyService { def sessionFactory def getRows() { def session = sessionFactory.currentSession session.createSQLQuery("S

如何从Grails服务访问Hibernate属性

在本例中,我必须对遗留数据库使用
createSQLQuery
,并且需要访问
hibernate.default\u schema
属性才能生成有效的SQL语句

class MyService {
    def sessionFactory

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

更新

Grails2.x多数据源和Hibernate属性的设置有一个怪癖。附加数据源中设置的属性将应用于默认数据源

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

datasource_ds2 {
    . . .
}
hibernate_ds2 {
    default_schema = "schema"
}
然后可以从grailsApplication中的
hibernate
config访问它们:

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

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

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()
    }
}

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

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()
    }
}

我没有意识到这些属性在Grails配置中是可用的。我一直试图从会话和数据源返回到它。非常感谢。我不知道Grails配置中有这些属性。我一直试图从会话和数据源返回到它。非常感谢。