14
说我有这样的:如何获取表GORM对象的名称映射到?
class Foo {
static mapping = {
table 'foo_table'
}
}
我怎样才能得到的foo_table
的名字,如果我有这个对象的实例的引用?
说我有这样的:如何获取表GORM对象的名称映射到?
class Foo {
static mapping = {
table 'foo_table'
}
}
我怎样才能得到的foo_table
的名字,如果我有这个对象的实例的引用?
进口org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder
。
从域类获得表名:
def tableName = GrailsDomainBinder.getMapping(Foo).table.name
,并从域类的实例拿到表名:
def tableName = GrailsDomainBinder.getMapping(foo.class).table.name
JamesA的回答会的工作,但只有当表名如果明确定义,就像问题中一样。
如果你想获得它是否是在映射指定表名,也可以使用SessionFactory
完成:
def tableName = sessionFactory.getClassMetadata(Foo).tableName
使用您的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