如何获取 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 对象映射到的表的名称?的主要内容,如果未能解决你的问题,请参考以下文章

如何从gorm中的many2many表中获取对象

Hive - 如何查询表以获取其自己的名称?

如何在 Stackdriver 警报文档中获取 Bigquery 表的名称

如何使用 SELECT DELETE INSERT UPDATE 操作获取表的名称

在数据库的表中如何获取表中各项名称:编号.姓名.性别...

如何在此映射上获取驱动程序名称