pourquoi devons-nous utiliser @la Modification de l'annotation pour les requêtes de Données Jpa
par exemple, j'ai une méthode dans mon interface CRUD qui supprime un utilisateur de la base de données:
public interface CrudUserRepository extends JpaRepository<User, Integer> {
@Transactional
@Modifying
@Query("DELETE FROM User u WHERE u.id=:id")
int delete(@Param("id") int id, @Param("userId") int userId);
}
Cette méthode fonctionne uniquement avec l'annotation @la Modification. Mais quel est le besoin pour l'annotation ici? Pourquoi ne peux-printemps analyser la requête et de comprendre que c'est une modification de la requête?
annotation dans un Référentiel est une mauvaise pratique, il est préférable de l'utiliser dans votre Service. Provoquer une action commerciale (transaction) peut être composée de plusieurs demandes de DB. même par plusieurs DAO. Plus ici stackoverflow.com/questions/1079114/...
OriginalL'auteur Artyom Emelyanenko | 2017-04-27
Vous devez vous connecter pour publier un commentaire.
Cela va déclencher la requête annoté à la méthode de l'actualisation de la requête au lieu d'une sélection. Comme l'EntityManager peut contenir obsolète entités après l'exécution de la modification de la requête, nous effacer automatiquement (voir JavaDoc de l'EntityManager.clear() pour plus de détails). Cela aura pour effet de chute de tous les non-rincé changements encore en suspens dans l'EntityManager. Si vous ne souhaitez pas l'EntityManager à être effacé automatiquement, vous pouvez définir @la Modification de l'annotation du clearAutomatically attribut false;
pour plus de détails, vous pouvez suivre ce lien:-
http://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/jpa.repositories.html
OriginalL'auteur Anshul Sharma
Requêtes qui nécessitent une
@Modifying
annotation inclure INSERT, UPDATE, DELETE, et des instructions DDL.Ajoutant
@Modifying
annotation indique que la requête n'est pas pour une requête SELECT.OriginalL'auteur Kusal Dissanayake