3

過去の多くのプロジェクトで、このJPA / Hibernate アプローチを使用してシステムに監査機能を追加しました。それは非常に効果的で控えめです。

Grails @MappedSuperclass の代替手段 (Groovy の代わりに Java でドメイン モデル オブジェクトをコーディングする以外) はありますか? テーブルを作成せずに、サブクラスごとのテーブルアプローチで親クラスを宣言するにはどうすればよいですか? GORM のドキュメント ( 5.2.3 Inheritance in GORM ) を読みましたが、階層ごとのテーブルとサブクラスごとのテーブルの議論以外に、これを行う方法の詳細は見つかりませんでした。

または、Grails でこのタイプの監査を実現するための推奨される方法は何ですか?

4

1 に答える 1

5

基本的には、as を宣言するMappedSuperclassだけabstractで、Grails はそのテーブルを作成しません。マニュアルを読み直して気づきました:

GORM は、抽象基底クラスと具象永続 GORM エンティティの両方からの継承をサポートします。つまり、具象クラスは永続的であるため、抽象クラスは永続的ではありません。もっと注意深く読むためにお金を払ってください。

例えば

abstract class Auditable {
    Date dateCreated
    Date lastUpdated
}

class Book extends Auditable {
    String title
    String description
}

book テーブルのみが作成され、列date_createdlast_updated列が含まれます。さらに、おまけとして、dateCreatedおよびlastUpdatedプロパティはGrails によって自動的にタイムスタンプされます。

于 2008-12-06T21:29:20.150 に答える