如何获取表GORM对象的名称映射到?

时间:2011-10-05 16:53:12

标签: grails dns gorm

说我有类似的东西:

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

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

2 个答案:

答案 0 :(得分:24)

导入org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder

从域类中获取表名:

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

并从域类的实例中获取表名:

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

答案 1 :(得分:13)

JamesA的回答是有效的,但只有在明确定义表名时才会有效,例如问题。

如果您希望获取表名,无论是否在映射中指定了表名,可以使用SessionFactory完成:

def tableName = sessionFactory.getClassMetadata(Foo).tableName