Say mam coś takiego:Jak zmapować nazwę tabeli obiektu GORM?
class Foo {
static mapping = {
table 'foo_table'
}
}
Jak mogę uzyskać nazwę foo_table
jeśli mam odniesienie do instancji tego obiektu?
Say mam coś takiego:Jak zmapować nazwę tabeli obiektu GORM?
class Foo {
static mapping = {
table 'foo_table'
}
}
Jak mogę uzyskać nazwę foo_table
jeśli mam odniesienie do instancji tego obiektu?
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
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
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