Spring Data JPA-Update @Query wird nicht aktualisiert: Das Flush-Dilemma
Bei der Verwendung von @Query-Annotationen für Aktualisierungsvorgänge in Spring Data JPA ist dies der Fall entscheidend, um das Verhalten des EntityManagers zu verstehen. Standardmäßig schreibt der EntityManager Änderungen nicht automatisch in die Datenbank. Dies kann zu unerwarteten Ergebnissen führen, bei denen Updates scheinbar ignoriert werden.
Im Fall des bereitgestellten Codes schlug der Integrationstest fehl, da die an der Admin-Entität vorgenommenen Änderungen nach der Update-Abfrage nicht in die Datenbank übertragen wurden . Um dieses Problem zu beheben, wird empfohlen, die Option „clearAutomatically = true“ mit der Annotation „@Modifying“ zu verwenden:
@Modifying(clearAutomatically = true) @Transactional @Query("UPDATE Admin SET firstname = :firstname, lastname = :lastname, login = :login, superAdmin = :superAdmin, preferenceAdmin = :preferenceAdmin, address = :address, zipCode = :zipCode, city = :city, country = :country, email = :email, profile = :profile, postLoginUrl = :postLoginUrl WHERE id = :id") public void update(@Param("firstname") String firstname, @Param("lastname") String lastname, ...);
Durch Hinzufügen dieser Option löscht der EntityManager die Änderungen automatisch, nachdem die Aktualisierungsabfrage ausgeführt wurde, und stellt so sicher, dass Sie werden in der Datenbank gespeichert.
Zusätzliche Beobachtungen:
Das obige ist der detaillierte Inhalt vonWarum funktioniert mein Spring Data JPA @Query-Update nicht: Das EntityManager-Flush-Rätsel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!