一尘不染

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

hibernate

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

class Person {

String firstName
.
.
.
}

有没有一种方法可以使用firstName取回字符串“ FIRST_NAME”或“ first_name”?我尝试使用

GrailsDomainBinder.getMapping(Person).columns

但这仅出于某种原因为我提供了id列。谢谢!


阅读 273

收藏
2020-06-20

共1个答案

一尘不染

好的,我认为这就是您要寻找的。给定以下域

class Company {    
  String name
  String logoUrl

  static mapping = {
    table 'people'
    name column: 'my_name'
    logoUrl column:  'lo_go_url'
  }
}

您可以使用以下命令检索域数据:

def result = GrailsDomainBinder.getMapping(Company).columns
println result['logoUrl'].column //prints 'lo_go_url'

您还可以使用以下闭合符打印出所有列名称:

result.each{ key, val -> // The key is the attribute name in the class (i.e. name, logoUrl)
  PropertyConfig prop = val // This is not needed, but I wanted to show the type being used. You could just call val.column below.
  println prop.column // This would print out 'my_name', 'lo_go_url'
}

希望这可以帮助!

2020-06-20