I am trying to update employee salary by using this query. Why I am getting unexpected token:near line 1 in JPA Query
error.
@Query("update employee set sal= sal 2000 where salary < :sal")
void updateEmployeeSalary(@Param("sal") Long sal)
And this is my service method
List<Employee> updateSalary(Long sal){
repo.updateEmployeeSalary(sal);
return repo.findAll();
}
CodePudding user response:
You need the @Modifying annotation:
@Modifying
@Query("update employee set sal= sal 2000 where salary < :sal")
void updateEmployeeSalary(@Param("sal") Long sal)
CodePudding user response:
If you want to perform Update
and Delete
operation in Spring Boot JPA
operation you want to declare @Modifying
annotation
Why declare @Modifying
annotation ->
To enhance the @Query
annotation to execute not only SELECT queries but also INSERT, UPDATE, DELETE, and even DDL queries
What if we forget to declare @Modifiying
annotation ->
Compiler throw exception InvalidDataAccessApiUsageException
means query is not supported for DML
operations.
clearAutomatically=true
defines whether we should clear the underlying persistence context after executing the modifying query
Modified Repository:
@Modifying(clearAutomatically=true)
@query("update Employee set salary = salary 2000 where salary< :sal")
CodePudding user response:
I think you need to write a query like this
@Modifying
@query("update Employee e set e.salary = e.salary 2000 where e.salary< :sal")