반응형

Spring boot에서 JPA를 이용해 Update query 개발시 다음과 같은 에러가 나는 경우가 발생

org.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [update bng.moobe.entity.User u set u.nickname = :__$synthetic$__1 where u.email = :__$synthetic$__2]; nested exception is java.lang.IllegalStateException: org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations [update bng.moobe.entity.User u set u.nickname = :__$synthetic$__1 where u.email = :__$synthetic$__2]
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:370) ~[spring-orm-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:255) ~[spring-orm-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527) ~[spring-orm-5.1.9.RELEASE.jar:5.1.9.RELEASE]
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.1.9.RELEASE.jar:5.1.9.RELEASE]

 

JPA @Query를 사용해 update시에는 @Modifying annotation을 추가해주어야 한다.

하지만 이것으로 끝이 아니다...다시 실행해보면 이번엔 다음과 같은 에러 메세지가 발생한다.

org.springframework.dao.InvalidDataAccessApiUsageException: Executing an update/delete query; nested exception is javax.persistence.TransactionRequiredException: Executing an update/delete query

이 문제를 해결하기 위해서는 @Transactional 애노테이션도 함께 추가해주어야 한다.

@Transactional 애노테이션 추가

 

ref : https://stackoverflow.com/questions/10220262/updating-boolean-value-in-spring-data-jpa-using-query-with-hibernate

반응형

+ Recent posts