如何从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"
答案 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()
}
}