14
說我有這樣的:如何獲取表GORM對象的名稱映射到?
class Foo {
static mapping = {
table 'foo_table'
}
}
我怎樣才能得到的foo_table
的名字,如果我有這個對象的實例的引用?
說我有這樣的:如何獲取表GORM對象的名稱映射到?
class Foo {
static mapping = {
table 'foo_table'
}
}
我怎樣才能得到的foo_table
的名字,如果我有這個對象的實例的引用?
進口org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder
。
從域類獲得表名:
def tableName = GrailsDomainBinder.getMapping(Foo).table.name
,並從域類的實例拿到表名:
def tableName = GrailsDomainBinder.getMapping(foo.class).table.name
JamesA的回答會的工作,但只有當表名如果明確定義,就像問題中一樣。
如果你想獲得它是否是在映射指定表名,也可以使用SessionFactory
完成:
def tableName = sessionFactory.getClassMetadata(Foo).tableName
使用您的Java類的解決方案: '字符串getTableName時(字符串fullyQualifiedClassName){ 字符串表名= 「」 如果(fullyQualifiedClassName){ 類thisClass =的Class.forName(fullyQualifiedClassName,真實,Thread.currentThread()。getContextClassLoader()) DEF domainObjectInstance = thisClass.newInstance() DEF grailsApplication = domainObjectInstance.domainClass.grailsApplication TABLENAME = grailsApplication.mainContext.getBean( 「sessionFactory的」)。getClassMetadata(thisClass).tableName } 返回TABLENAME }' – CSQ