[JPA] @Query로 Update 쿼리할때 org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations 에러
JPA 2016.04.22 15:10Spring Data-JPA 사용하면서 거의 대부분 메소드명으로 쿼리를 만들어쓰는데
가끔 @Query 를 사용하여 JPQL 을 만들어 쓰는데 아래와 같은 에러가 났다.
@Query(value = "UPDATE Item i\n" +
"SET i.yesterdayRanking = i.todayRanking\n " +
" , i.todayRanking = 0\n " +
"where i.createDate between ?1 and ?2")
void updateRanking(Date startDate, Date endDate);
에러 : org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations
UPDATE 쿼리를 실행할 때는 @Modifying annotation 을 붙여줘야한다. 그리고 @Transactional 도 같이
@Modifying
@Transactional
@Query(value = "UPDATE Item i\n" +
"SET i.yesterdayRanking = i.todayRanking\n " +
" , i.todayRanking = 0\n " +
"where i.createDate between ?1 and ?2")
void updateRanking(Date startDate, Date endDate);
@query,
hibernate,
JPA,
Modifying,
Not supported for DML operations,
QueryExecutionRequestException,
spring data,
Update
좋은소식 잘 읽었습니다.~^^