Heim >Java >javaLernprogramm >Warum werden meine Update-Anweisungen in Spring Data JPA nicht geleert?
Aktualisierungsanweisungen werden nicht geleert?
Die @Query-Annotation von Spring Data JPA ermöglicht die Ausführung benutzerdefinierter Abfragen. Im bereitgestellten Codeausschnitt wird eine @Modifying-Abfrage verwendet, um eine Admin-Entität zu aktualisieren. Die durch diese Abfrage vorgenommenen Änderungen werden jedoch nicht in der Datenbank gespeichert.
Die Rolle des Leerens
Standardmäßig löscht der EntityManager Änderungen nicht automatisch. Dies bedeutet, dass die durch eine @Modifying-Abfrage vorgenommenen Änderungen nur im lokalen Cache des EntityManagers widergespiegelt werden, aber nicht in der Datenbank gespeichert werden, bis der EntityManager explizit geleert wird.
Lösung: Leeren erzwingen
Um sicherzustellen, dass durch @Modifying-Abfragen vorgenommene Änderungen in der Datenbank beibehalten werden, fügen Sie der @Modifying-Annotation die Option „clearAutomatically = true“ hinzu. Dadurch wird der EntityManager gezwungen, Änderungen nach jedem Schreibvorgang automatisch zu löschen, um sicherzustellen, dass die Datenbank sofort aktualisiert wird.
Geänderte Abfrage:
<code class="java">@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, @Param("login") String login, @Param("superAdmin") boolean superAdmin, @Param("preferenceAdmin") boolean preferenceAdmin, @Param("address") String address, @Param("zipCode") String zipCode, @Param("city") String city, @Param("country") String country, @Param("email") String email, @Param("profile") String profile, @Param("postLoginUrl") String postLoginUrl, @Param("id") Long id);</code>
Zusätzlich Überlegungen:
Das obige ist der detaillierte Inhalt vonWarum werden meine Update-Anweisungen in Spring Data JPA nicht geleert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!