【问题标题】:How to get the name of the table GORM object is mapped to?如何获取 GORM 对象映射到的表的名称?
【发布时间】:2011-12-01 15:58:37
【问题描述】:

假设我有类似的东西:

class Foo {
    static mapping = {
        table 'foo_table'
    }
}

如果我引用了此对象的实例,我如何获得foo_table 的名称?

【问题讨论】:

    标签: grails dns grails-orm


    【解决方案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 }
      猜你喜欢
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 2020-08-10
      • 2012-04-02
      • 2021-08-07
      • 2016-06-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多