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



참조 : http://stackoverflow.com/questions/10220262/updating-boolean-value-in-spring-data-jpa-using-query-with-hibernate




YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST
  1. 1466411013 2016.06.20 17:23 신고  댓글주소  수정/삭제  댓글쓰기

    좋은소식 잘 읽었습니다.~^^