4

私はspring-dataとmongodbで遊んでいます。私が達成しようとしているのは、オブジェクトを作成および/または更新するときに、createdOnとupdatedOnの日付を自動的に設定することです。したがって、基本的に、createdOnとupdatedOnの日付属性を保持する「BaseDocument」を作成し、AbstractMongoDbListenerを作成して、保存前(onBeforeSave)にドキュメントをインターセプトし、それらの日付を設定できるようにしました。問題は、BaseDocumentを拡張するクラスのコンストラクターにこれらの日付を追加しないと、それらの日付がデータベースに永続化されないことです。サブクラスは、それらを永続化するために、コンストラクターでcreatedOnとupdatedOnを持っている必要があり、これらの日付の作成を自動化するというアイデアを台無しにしています。それを実装するための良い戦略は何でしょうか?

前もって感謝します!

4

2 に答える 2

14

監査サポートは、Spring DataMongoDB1.2.0に実装されています。使用するには、クラスパスにjoda-timeを設定し、作成および変更された日付のタイプをDateTimeに設定する必要があります。必要なすべての手順

  • Mavenの依存関係を追加する
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.2</version>
    </dependency>
  • Spring構成での監査にサポートを追加する
    <mongo:auditing />
  • 次のように、クラスのプロパティに注釈を付けます。
    @CreatedDate
    private DateTime created;

    @LastModifiedDate
    private DateTime modified;

注意点:作成日は、_idフィールドを設定せずにドキュメントを保存した場合にのみ設定されます。

于 2013-03-17T14:08:22.027 に答える
0

OK、onBeforeSaveの代わりにonBeforeConvertを使用して動作させました。DBObjectではなくソースオブジェクトを設定していました。変換する前に設定するとうまくいきます。

于 2013-03-16T15:45:35.727 に答える