반응형
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 애노테이션도 함께 추가해주어야 한다.
반응형
'Programming > Java,Spring' 카테고리의 다른 글
[ Springboot ] Unable to start embedded Tomcat servlet container error (0) | 2020.02.12 |
---|---|
[ Springboot ] 쿠키를 response에 add해줬는데 브라우저에 안남아요??? redirect?? (3) | 2020.02.02 |
[ Java, Spring ] 자바나 스프링에서 jdbc template으로 hive명령어 날릴 때 주의점(semicolon) (0) | 2019.12.10 |
[ Spring ] URL redirect할 경우 사용하면 안되는 문자열들 (0) | 2019.11.13 |
[ Springboot / JPA ] JPA composite key 사용할 때 @IdClass, Serializable (2) | 2019.10.14 |