2011-10-05 12 views

Odpowiedz

23

Import org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.

Aby uzyskać nazwę tabeli z klasy domeny:

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

i uzyskać nazwę tabeli z instancji klasy domeny:

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

odpowiedź Jamesa będzie działać, ale tylko wtedy, gdy nazwa tabeli, jeśli została zdefiniowana jawnie, tak jak w pytaniu.

Jeśli chcesz uzyskać nazwę tabeli, czy nie został on określony w mapowaniu, można to zrobić za pomocą SessionFactory:

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

Korzystanie rozwiązanie dla klas Java: 'String getTableName (String fullyQualifiedClassName) { String tableName = "" if (fullyQualifiedClassName) { Klasa thisClass = Class.forName (fullyQualifiedClassName, prawda, Thread.currentThread(). getContextClassLoader()) def domainObjectInstance = thisClass.newInstance() def grailsApplication = domainObjectInstance.domainClass.grailsApplication tableName = grailsApplication.mainContext.getBean ("SessionFactory"). GetClassMetadata (thisClass) .tableName } powrotu TableName } ' – CSQ

Powiązane problemy