query mkyong example ejemplo data baeldung java spring spring-data-jpa spring-annotations

java - mkyong - spring repository



¿Por qué tenemos que usar @Modifying anotation para consultas en Data Jpa? (1)

por ejemplo, tengo un método en mi interfaz CRUD que elimina un usuario de la base de datos:

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); }

Este método solo funcionará con la anotación @Modifying. ¿Pero cuál es la necesidad de la anotación aquí? ¿Por qué no puedo analizar la consulta y entender que se trata de una consulta de modificación?


Esto activará la consulta anotada en el método como una consulta de actualización en lugar de seleccionar una. Como el EntityManager puede contener entidades desactualizadas después de la ejecución de la consulta de modificación, lo borramos automáticamente (consulte JavaDoc de EntityManager.clear () para obtener más información). Esto eliminará de manera efectiva todos los cambios sin vaciar aún pendientes en el EntityManager. Si no desea que el EntityManager se borre automáticamente, puede establecer el atributo clearAutomatically de @Modifying anotation en false;

Para más detalles puedes seguir este enlace: -

http://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/jpa.repositories.html