2012-03-28 7 views
1

私のアプリケーションには多くのドメインクラスがあり、監査ログ用にあります。各ドメインクラスの名前属性が必要です。残念ながら、name属性はすべてのドメインで一般的ではありません。
私はAudtログクラスでは、オブジェクトのタイプを変更/作成/削除して、今すぐidを保存します(すべてのドメインに 'id'属性があるので共通コードです)。 IDからドメインの各ドメインには、Resource DomainにはresourceName、UserドメインにはuserNameなどのような異なる名前属性があります。soは各ドメインを別々に処理する必要があります。 Domainクラス名からname属性を取得します)。
各ドメインクラスの名前フィールドに「名前」と呼ばれるエイリアスマッピングを持たせる方法はありますか?ドメインの実際の属性に変更を加える必要はありません。監査ドメインには列を追加できますが、他の表の変更は追加できません。
ありがとうございます
grailsのドメインクラス属性に複数のエイリアスを持たせることができます

答えて

2

私はこれを自動的に行う方法はないと思います。

あなたが推測したように、すべてのドメインオブジェクトを 'name'属性を持つように変更するか、各クラスのどの属性が 'name'属性であるかのマップを何らかの形で維持する必要があります'

私は、それぞれのドメインクラスにgetName()メソッドを追加し、そのメソッドから適切な値を返すという答えがあるとします。

本当にドメインオブジェクトを変更したくない場合は、Groovyメタオブジェクトプログラミング(MOP)を使用して、このメソッドをBootStrapクラスの各ドメインクラスに挿入できます。

+0

私は、最もエレガントな方法のように見えるgetName関数を実行できます。ありがとう –

関連する問題