0

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

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它是静态的。

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

谢谢颜

4

3 回答 3

1

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

class User
{
    String username

    static mapping = {
      table Holders.config.console?.datasource?.table?.user?.mapping ?: 'user'
    }
}
于 2013-03-19T15:16:04.273 回答
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'
    }
}
于 2013-03-20T04:05:30.573 回答
-1

尝试注入 grailsApplication。见这里:http ://digitalbreed.com/2011/deprecation-of-configurationholder-in-grails-2

于 2013-03-18T04:04:17.753 回答