从grails域的属性获取数据库列名称

4 grails hibernate

我正在使用我的域对象映射一堆遗留表.有没有办法在Domain类中查找属性的数据库列名(反之亦然)?例如:

class Person {

String firstName
.
.
.
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用firstName来取回字符串"FIRST_NAME"或"first_name"?我试过用

GrailsDomainBinder.getMapping(Person).columns
Run Code Online (Sandbox Code Playgroud)

但由于某种原因,这只给了我id列.谢谢!

Phi*_*enn 8

我只是将这些代码一起扔了,所以请不要在风格上打败我.:-)

尝试将其放入您的测试操作方法PersonController并添加我的import语句,sessionFactory如下所示:

import org.hibernate.persister.entity.AbstractEntityPersister
import org.codehaus.groovy.grails.commons.DefaultGrailsDomainClass

class PersonController {

    // This should get injected by Grails automatically
    def sessionFactory

    ....
    def myTestAction() {
        def domainClazz = grailsApplication.getClassForName("com.test.Person")

        def clazzMetadata = sessionFactory.getClassMetadata(domainClazz)
        def AbstractEntityPersister abstractEntityPersister = (AbstractEntityPersister) clazzMetadata
        def grailsDomainClazz = new DefaultGrailsDomainClass(domainClazz)

        def grailsDomainClazzProperties = grailsDomainClazz.getProperties()

        grailsDomainClazzProperties.each() {
            println "Property Name: ${it.name}"
            abstractEntityPersister.getPropertyColumnNames(it.name).each() {
                println "DB Column: ${it}"
            }
        }
     }
}
Run Code Online (Sandbox Code Playgroud)