2011-10-05 4 views

risposta

23

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

Per ottenere il nome della tabella dalla classe di dominio:

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

e per ottenere il nome della tabella da un'istanza della classe di dominio:

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

risposta di JamesA funziona, ma solo se nome della tabella se definito esplicitamente, come nella domanda.

Se si desidera ottenere un nome di tabella o meno è stato specificato nella mappatura, si può fare utilizzando SessionFactory:

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

Utilizzando la soluzione per le classi Java: 'String getTableName (String fullyQualifiedClassName) { String tableName = "" se (fullyQualifiedClassName) { Classe thisClass = Class.forName (fullyQualifiedClassName, vero, Thread.currentThread(). getContextClassLoader()) def domainObjectInstance = thisClass.newInstance() def grailsApplication = domainObjectInstance.domainClass.grailsApplication tableName = grailsApplication.mainContext.getBean ("sessionFactory"). GetClassMetadata (thisClass) .tableName } ritorno tableName } ' – CSQ

Problemi correlati