2011-10-05 17 views

Respuesta

23

Importación org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder.

Para obtener el nombre de la tabla de la clase de dominio:

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

y para obtener el nombre de tabla desde una instancia de la clase de dominio:

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

respuesta de JamesA va a funcionar, pero sólo si nombre de la tabla si se define explícitamente, como en la pregunta.

Si desea obtener un nombre de tabla si es o no se ha especificado en la cartografía, se puede hacer uso de SessionFactory:

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

El uso de su solución para las clases de Java: 'Cadena getTableName (String fullyQualifiedClassName) { cadena nombreTabla = "" si (fullyQualifiedClassName) { Clase thisClass = Class.forName (fullyQualifiedClassName, es cierto, Thread.currentThread(). getContextClassLoader()) def domainObjectInstance = thisClass.newInstance() def grailsApplication = domainObjectInstance.domainClass.grailsApplication nombreTabla = grailsApplication.mainContext.getBean ("sessionFactory"). GetClassMetadata (thisClass) .tableName } retorno nombreTabla } ' – CSQ

Cuestiones relacionadas