允许通过grails / gorm中的配置更改表名的正确方法是什么

时间:2013-03-17 22:05:22

标签: grails gorm

我目前有以下代码来定义我的“用户”类

class User
{
  String username

  static mapping = {
    table ConfigurationHolder.config.console.datasource.table.user.mapping ?: 'user'
  }
}

这适用于grails 1.3.5,但升级到2.2.1后,grails继续抱怨ConfigurationHolder被弃用。

所以在技术上它“仍然”工作正常,但是一旦他们删除了这个课程就会发生什么。文档说“使用依赖注入”。但我不能使用依赖注入,因为mapping是静态的。

真正的问题是允许通过配置重命名表的“正确”方法是什么?

由于 颜

3 个答案:

答案 0 :(得分:1)

您可以使用grails.util.Holders类来访问配置:

class User
{
    String username

    static mapping = {
      table Holders.config.console?.datasource?.table?.user?.mapping ?: 'user'
    }
}

答案 1 :(得分:1)

applicationContext作为第一个参数传递给映射闭包。

有关详细信息,请参阅http://jira.grails.org/browse/GRAILS-8087和源代码:https://github.com/grails/grails-core/blob/2.2.x/grails-hibernate/src/main/groovy/org/codehaus/groovy/grails/orm/hibernate/cfg/HibernateMappingBuilder.groovy#L61

使用示例:

class User
{
    String username

    static mapping = { ctx ->
      table ctx.grailsApplication.config.console?.datasource?.table?.user?.mapping ?: 'user'
    }
}

答案 2 :(得分:-1)