2011-10-05 130 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