grails ドメイン クラスに動的フィールドを追加する方法を見つけようとしています。Burt の記事に基づいて動的ドメイン クラス プラグインを見つけましたが、これは私たちのニーズには多すぎます。
person のドメイン クラスがあるとします。
class Person extends DynamicExtendableDomainObject {
String firstName
String lastName
static constraints = {
firstName(nullable: false, blank: false, maxSize: 50)
lastName(nullable: false, blank: false)
}
}
ここで、顧客aは、これに生年月日フィールドも含めたいと考えています。ある種の管理ツールを使用して、この追加フィールドをデータベースに追加します。
顧客bは、フィールド ミドル ネームも持ちたいと考えているため、フィールド ミドル ネームを人物に追加しています。
DynamicExtendableDomainObject
ここで、 Person クラスが継承するクラスを実装しました。これにより、これから継承する各ドメイン クラスにカスタム フィールドが追加され、動的プロパティがそのまま保存さJSON
れます (Perl の KiokuDB がそれらを保存するようなものです)。
Person がインスタンス化されたら、これらの動的プロパティを Person クラスに追加して、標準の Grails ゲッターとセッター、およびこれらのテンプレート関数を使用できるようにします。
したがって、顧客aではスキャフォールディングを使用でき、人は firstName、lastName、birthDate を出力し、顧客 b ではスキャフォールディングは firstName、lastName、middleName を出力します。
プロパティの保存は、 を使用して実装され、saveinterceptor
これらのプロパティを JSON にシリアル化し、特別なフィールドに保存します。
しかし、実行時にこれらの JSON プロパティを動的にドメイン クラスに追加する方法はまだ見つかっていません。これを処理する良い方法はありますか?もしそうなら、これをどのように実装するのが最善ですか?