【问题标题】:Access hibernate properties from Grails service?从 Grails 服务访问休眠属性?
【发布时间】:2012-07-02 13:10:31
【问题描述】:

如何从 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"

【问题讨论】:

    标签: hibernate grails


    【解决方案1】:

    它们存储在 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()
        }
    }
    

    【讨论】:

    • 我没有意识到这些属性在 Grails 配置中可用。我一直试图从会话和数据源回到它。非常感谢。
    猜你喜欢
    • 2015-01-12
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多