Ich habe einige Objekte, die ich nicht löschen kann, und muss stattdessen ein allgemeines Feld namens "gelöscht" aktualisieren. Ich lese dort , dass ich kann schreibe generische Querys mit #{#entityName}
.
Aus diesem Grund habe ich versucht, CrudRepository#delete(…)
methode wie folgt zu überschreiben:
Aber ich habe einen Komponententest, der mich falsch zeigt!
%Vor% Ist es nicht möglich, CrudRepository
Methoden wie diese zu überschreiben?
Zum Ändern von Abfragen müssen Sie der Methode ein @Modifying
hinzufügen.
Achten Sie darauf, dass Sie die Nebenwirkungen der von Ihnen gewählten Methode kennen:
EntityManager
-Caches. Ein nachfolgendes findOne(…)
kann / wird also immer noch die alte Instanz des Objekts, das Sie löschen wollten, zurückgeben, falls EntityManager
es bereits geladen hat. Um dies zu verhindern, setzen Sie das Flag clearAutomatically
in @Modifying
auf true
, aber beachten Sie, dass dadurch alle ausstehenden Änderungen gelöscht werden. @PreUpdate
-Ereignis warten, nicht benachrichtigt werden. Auch irgendwelche Kaskadenoperationen Tags und Links java spring-data jpql crud