Maison >Java >javaDidacticiel >Pourquoi ma mise à jour Spring Data JPA @Query ne fonctionne-t-elle pas : le mystère EntityManager Flush ?
Mise à jour de Spring Data JPA @Query non mis à jour : le dilemme du Flush
Lors de l'utilisation d'annotations @Query pour les opérations de mise à jour dans Spring Data JPA, il est crucial pour comprendre le comportement de l’EntityManager. Par défaut, EntityManager n'efface pas automatiquement les modifications apportées à la base de données. Cela peut conduire à des résultats inattendus, où les mises à jour semblent être ignorées.
Dans le cas du code fourni, le test d'intégration a échoué car les modifications apportées à l'entité Admin n'ont pas été vidées dans la base de données après la requête de mise à jour. . Pour résoudre ce problème, il est recommandé d'utiliser l'option clearAutomatically = true avec l'annotation @Modifying :
@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, ...);
En ajoutant cette option, EntityManager videra automatiquement les modifications après l'exécution de la requête de mise à jour, garantissant que ils sont conservés dans la base de données.
Observations supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!