如何获取 GORM 对象映射到的表的名称?
Posted
技术标签:
【中文标题】如何获取 GORM 对象映射到的表的名称?【英文标题】:How to get the name of the table GORM object is mapped to? 【发布时间】:2011-12-01 15:58:37 【问题描述】:假设我有类似的东西:
class Foo
static mapping =
table 'foo_table'
如果我引用了此对象的实例,我如何获得foo_table
的名称?
【问题讨论】:
【参考方案1】:导入org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder
。
从域类中获取表名:
def tableName = GrailsDomainBinder.getMapping(Foo).table.name
并从域类的实例中获取表名:
def tableName = GrailsDomainBinder.getMapping(foo.class).table.name
【讨论】:
【参考方案2】:JamesA 的答案会起作用,但前提是表名明确定义,就像问题中一样。
如果你想得到一个表名,不管它是否在映射中指定,都可以使用SessionFactory
:
def tableName = sessionFactory.getClassMetadata(Foo).tableName
【讨论】:
将您的解决方案用于 java 类:String getTableName(String fullyQualifiedClassName) String tableName = "" if (fullyQualifiedClassName) Class thisClass = Class.forName(fullyQualifiedClassName, true, Thread.currentThread().getContextClassLoader()) def domainObjectInstance = thisClass.newInstance() def grailsApplication = domainObjectInstance.domainClass.grailsApplication tableName = grailsApplication.mainContext.getBean("sessionFactory").getClassMetadata(thisClass).tableName return tableName
以上是关于如何获取 GORM 对象映射到的表的名称?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Stackdriver 警报文档中获取 Bigquery 表的名称