2016-05-19 10 views
2

Ich versuche, Überwachung mithilfe von Spring Data MongoDB @LastModifiedDate Annotation einzuführen. Es funktioniert gut für Top-Level-Dokumente, aber ich habe mit dem Problem für eingebettete Objekte konfrontiert.Spring Data MongoDB-Überwachung funktioniert nicht für eingebettete Dokumente

Zum Beispiel:

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

    @Id 
    String id;   

    @LastModifiedDate 
    DateTime updated; 

    List<ChildDocument> children; 

} 

@Document 
class ChildDocument { 

    @Id 
    String id;   

    @LastModifiedDate 
    DateTime updated; 

} 

standardmäßig, wenn ich parentDocument Instanz mit innerer children Liste speichern, updated Wert ist nur für parentDocument aber nicht für jedes Objekt aus der children Liste. Aber in diesem Fall möchte ich sie auch prüfen. Ist es möglich, dieses Problem irgendwie zu lösen?

+0

Verwandte Ausgabe entsprechende Bohne: https://jira.spring.io/browse/DATAMONGO-1440 –

Antwort

0

Ich habe beschlossen, es zu lösen individuelle 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)); 
     } 
    } 
} 

mit und fügen Sie dann zu dem Anwendungskontext

<bean id="customAuditingEventListener" class="app.CustomAuditingEventListener"/> 
Verwandte Themen