2016-05-19 23 views
2

Spring Data MongoDB @LastModifiedDateアノテーションを使用して監査を導入しようとしています。トップレベルのドキュメントではうまく動作しますが、埋め込みオブジェクトの問題に直面しました。例えばSpringデータMongoDB監査が埋め込みドキュメントでは機能しません

:デフォルトでは

@Document(collection = "parent") 
class ParentDocument { 

    @Id 
    String id;   

    @LastModifiedDate 
    DateTime updated; 

    List<ChildDocument> children; 

} 

@Document 
class ChildDocument { 

    @Id 
    String id;   

    @LastModifiedDate 
    DateTime updated; 

} 

、私はインナーchildrenリストとparentDocumentインスタンスを保存するとき、updated値だけparentDocumentのためではなく、childrenリストから任意のオブジェクトに設定されています。しかしこの場合、私はそれらも監査したいと思っています。どういうわけかこの問題を解決することは可能ですか?

+0

関連の問題に対応するBeanを追加することを決定しました:https://jira.spring.io/browse/DATAMONGO-1440 –

答えて

0

私はカスタムApplicationListener

public class CustomAuditingEventListener implements 
     ApplicationListener<BeforeConvertEvent<Object>> { 

    @Override 
    public void onApplicationEvent(BeforeConvertEvent<Object> event) { 
     Object source = event.getSource(); 
     if (source instanceof ParentDocument) { 
      DateTime currentTime = DateTime.now(); 
      ParentDocument parent = (ParentDocument) source; 
      parent.getChildren().forEach(item -> item.setUpdated(currentTime)); 
     } 
    } 
} 

を使用してそれを解決し、アプリケーションのコンテキストに

<bean id="customAuditingEventListener" class="app.CustomAuditingEventListener"/> 
関連する問題