Recipe Name:
Missing annotation in update query
Description:
Queries performing write operations should have the @Modifying annotation.
Level:
error
Language:
- java
Tags:
- Spring
- framework specific
- Spring Data
- quality
Documentation
Queries that perform a write operation (Insert, Delete, Update) should receive the Spring Data @Modifying
annotation. This annotation enables the @Query
annotation to perform these modifications instead of performing queries only with returning the amount of changed records in the data store.
@Query("delete User u where u.active = false") int deleteDeactivatedUsers(); // Will produce InvalidDataAccessApiUsageExceptionAfter
@Modifying @Query("delete User u where u.active = false") int deleteDeactivatedUsers(); // No exceptionReferences
Recipe
id: scw:spring:data:query-modifying version: 10 metadata: name: Missing annotation in update query shortDescription: Queries performing write operations should have the @Modifying annotation. level: error language: java enabled: true descriptionFile: descriptions/Missing_annotation_in_update_query.html tags: Spring;framework specific;Spring Data;quality search: method: annotation: type: org.springframework.data.jpa.repository.Query parameters: - value: value: stringified: anyOf: - contains: INSERT caseSensitive: false - contains: DELETE caseSensitive: false - contains: UPDATE caseSensitive: false without: annotation: type: org.springframework.data.jpa.repository.Modifying availableFixes: - name: Annotate with @Modifying actions: - addAnnotation: annotation: '@org.springframework.data.jpa.repository.Modifying'