2011-10-05 5 views

答えて

23

インポートorg.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder

ドメインクラスからテーブル名を取得するには:

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

とドメインクラスのインスタンスからテーブル名を取得します

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

JamesAの答えは動作しますが、場合にのみ、質問のように明示的に定義されている場合はテーブル名。 Javaクラスのソリューションを使用して

def tableName = sessionFactory.getClassMetadata(Foo).tableName 
+3

あなたはそれがマッピングで指定されたかどうか、テーブル名を取得したい場合、それはSessionFactoryを使用して行うことができる '文字列getTableName(文字列fullyQualifiedClassName){ 文字列tableNameの= "" IF(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

関連する問題