2011-10-05 33 views

回答

23

進口org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder

從域類獲得表名:

def tableName = GrailsDomainBinder.getMapping(Foo).table.name 

,並從域類的實例拿到表名:

def tableName = GrailsDomainBinder.getMapping(foo.class).table.name 
10

JamesA的回答會的工作,但只有當表名如果明確定義,就像問題中一樣。

如果你想獲得它是否是在映射指定表名,也可以使用SessionFactory完成:

def tableName = sessionFactory.getClassMetadata(Foo).tableName 
+3

使用您的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