Doctrine 2.1 Persistentität in preUpdate lifeCycleCallback

8

Ich habe mit folgenden Problemen zu kämpfen: In einer Entity-Klasse habe ich einen pre-LifeCycleCallback vor dem Update, der eine neue Entität beibehalten muss, bevor die Änderungen für einen AuditTrail geleert werden.

In preRemove und prePersist funktioniert das perfekt, aber in preUpdate passiert nichts. Wenn ich flush selbst aufruft geht es in eine rekursive Schleife.

Gemäß den Google-Gruppen für doctrine-user sollte das Einfügen in onFlush eine Option sein, aber in diesem Fall kann ich nicht auf die alten Werte der Entität zugreifen, um diese alten Werte in einer neuen Entität für den Audittrail zu speichern.

Ein kleines Beispiel, was ich zu archivieren versuche:

%Vor%

Es ist kein wirklicher Code, nur etwas, um dir zu zeigen, was ich will. Ich habe auch so etwas versucht:

%Vor%

Was nach diesem Thema funktionieren sollte: Ссылка

Wenn ich den Flush erneut aufruft, aber Apache wegen einer Endlosschleife abstürzt.

Wer hat Ideen für mich? Danke!

    
Kees Schepers 25.10.2011, 10:07
quelle

3 Antworten

6

Sie sollten niemals den Entity Manager in Ihren Entitäten verwenden. Wenn Sie Audit-Trails hinzufügen möchten, sollten Sie die Entität "SomeEntity" der Entität "AuditTrail" zuordnen und so etwas wie

tun %Vor%

Wenn Sie die kaskadierende Option auf das Mapping setzen, wird es beibehalten, wenn Sie "SomeEntity" beibehalten.

    
tvlooy 13.11.2011, 09:48
quelle
3

Ich hatte das gleiche Problem in der preUpdate-Methode eines EventListener. Ich löste das, indem ich die neue Entität in einer Eigenschaft speicherte und die neuen persist () - und flush () - Aufrufe an die postUpdate-Methode weitergab.

%Vor%

}

    
ACNB 06.04.2013 21:53
quelle
0

entitymanager- & gt; persist () funktioniert nicht innerhalb der preUpdate-Methode. Stattdessen können Sie die AuditTrail-Daten in der Sitzung speichern und nach dem Flush von 'SomeEntity' die Daten aus der Sitzung übernehmen und den Entitymanager- & gt; persist (...) und den Entitymanager- & gt; flush ()

    
Darshita 21.05.2012 09:35
quelle

Tags und Links