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

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

クラスを使用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

代わりに grailsApplication を注入してみてください。ここを参照してください: http://digitalbreed.com/2011/deprecation-of-configurationholder-in-grails-2

于 2013-03-18T04:04:17.753 に答える