如何在Grails中更改列名约定?

yur*_*ura 5 grails groovy grails-domain-class

现在我有字段"String firstName"它转换为"first_name",我希望"firstname"作为Hibernate的默认值.它可以吗?

Aar*_*ers 8

5.5.2.1表和列名称

class Person {
  String firstName
  static mapping = {
      table 'people'
      firstName column:'firstname'
  }
}
Run Code Online (Sandbox Code Playgroud)


Ste*_*e K 6

您可以更改整个项目的命名策略.从文档https://grails.github.io/grails-doc/latest/guide/GORM.html#customNamingStrategy.

默认情况下,Grails使用Hibernate的ImprovedNamingStrategy将域类和字段名称转换为SQL表和列名称,方法是将camel-cased字符串转换为使用下划线作为字分隔符的字符串.您可以在映射闭包中基于每个实例自定义这些,但如果存在一致的模式,则可以指定要使用的其他NamingStrategy类.

配置要在hibernate部分的grails-app/conf/DataSource.groovy中使用的类名,例如

所以,在DataSource.groovy中就是这样的

dataSource {
    pooled = true
    dbCreate = "create-drop"
     …
}
hibernate {
    cache.use_second_level_cache = true
     …
    naming_strategy = org.hibernate.cfg.DefaultNamingStrategy
}
Run Code Online (Sandbox Code Playgroud)