Spring Data JPA Update @Query wird nicht aktualisiert?
In Spring Data JPA können Sie mit der @Query-Annotation benutzerdefiniertes oder natives JPQL definieren SQL-Abfragen zum Ändern von Datenbankzeilen. Allerdings löst die @Modifying-Annotation allein möglicherweise nicht die notwendigen Lösch- und Persistenzvorgänge aus, um die Datenbank zu aktualisieren.
Um sicherzustellen, dass Änderungen in der Datenbank gespeichert werden, wird empfohlen, das Attribut „clearAutomatically“ innerhalb der @Modifying-Annotation zu verwenden. Dieses Attribut bestimmt, ob der Persistenzkontext nach der Ausführung der Abfrage automatisch gelöscht wird. Wenn Sie „clearAutomatically“ auf „true“ setzen, werden während der Abfrageausführung vorgenommene Änderungen automatisch erkannt und in die Datenbank geschrieben.
Hier ist ein Beispiel dafür, wie Sie „clearAutomatically“ in Ihrer @Modifying-Abfrage verwenden können:
@Modifying(clearAutomatically = true) @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);
Durch die Einstellung von „clearAutomatically“ auf „true“ wird der Persistenzkontext nach der Ausführung der Update-Abfrage gelöscht. Dadurch wird erzwungen, dass die am Admin-Objekt vorgenommenen Änderungen in der Datenbank beibehalten werden.
Bedenken Sie, dass sich „clearAutomatically“ nur auf den Persistenzkontext auswirkt, der dem aktuellen EntityManager zugeordnet ist. Wenn Sie mehrere Persistenzkontexte verwenden, müssen Sie das Leeren möglicherweise manuell verwalten, um sicherzustellen, dass Änderungen ordnungsgemäß über alle hinweg synchronisiert werden.
Das obige ist der detaillierte Inhalt vonWarum wird mein Spring Data JPA @Query-Update nicht in der Datenbank angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!